Professional Documents
Culture Documents
Apache Jack Rabbit OAK On MongoDB PDF
Apache Jack Rabbit OAK On MongoDB PDF
Apache Jack Rabbit OAK On MongoDB PDF
About me
eer
Software Engin
a y / A d o b e s in ce 2002
At D
C R A P I S p e c ifi cation
J
er
Apache memb
a ch e J a c k r a b b it / Oak
Ap
OSGi Container
Web Framework
OSGi Container
Web Framework
.tar
Done in 2 weeks
Developer happiness
© 2014 Adobe Systems Incorporated. All Rights Reserved. 9
Java Content Repository – Why?
Done in 4 weeks
Developer happiness
© 2014 Adobe Systems Incorporated. All Rights Reserved. 10
Java Content Repository – Why?
Done in 4 weeks
Developer happiness
© 2014 Adobe Systems Incorporated. All Rights Reserved. 11
Java Content Repository – Why?
Done in 8 weeks
Developer happiness
© 2014 Adobe Systems Incorporated. All Rights Reserved. 12
Java Content Repository – Why?
Developer happiness
© 2014 Adobe Systems Incorporated. All Rights Reserved. 13
Java Content Repository – Features
Asynchronous Observation
Cacheable
Customizable
Cacheable
Pluggable Storage
Customizable Custom Index Definitions
Scalable
Copy-On-Write
Cacheable Multiversion Concurrency
Content Addressable Storage
Customizable
Scalable
Rev 1
/a /b
Rev 1
/a /b new
Rev 1 Rev 2
copy parents
/ /'
/a /b /b'
Rev 1 Rev 2
/ /'
/a /b /b'
/'
/a /b'
Rev 2 compact
/'
/a /b'
{!
_id : “/home/john”,!
name : “john”,!
email : “john@example.com”!
}!
{!
_id : “2:/home/john”,!
name : { “r14979e4b424-0-1” : “john” },!
email : { “r14979e4b424-0-1” : “john@example.com” },!
_deleted : { “r14979e4b424-0-1” : “false” },!
_revisions : { “r14979e4b424-0-1” : “c” }!
}!
{!
_id : “2:/home/john”,!
name : { “r14979e4b424-0-1” : “john” },!
email : { “r14979e4b424-0-1” : “john@example.com” },!
_deleted : { “r14979e4b424-0-1” : “false” },!
_revisions : { “r14979e4b424-0-1” : “c” }!
}!
{!
_id : “2:/home/john”,!
name : { “r14979e4b424-0-1” : “john” },!
email : { “r14979e4b424-0-1” : “john@example.com” },!
_deleted : { “r14979e4b424-0-1” : “false” },!
_revisions : { “r14979e4b424-0-1” : “c” }!
}!
{!
_id : “2:/home/john”,!
name : { “r14979e4b424-0-1” : “john” },!
email : {!
“r14979e4b424-0-1” : “john@example.com”,!
“r14979e6a941-0-1” : “john.doe@example.com”!
},!
_deleted : { “r14979e4b424-0-1” : “false” },!
_revisions : {!
“r14979e4b424-0-1” : “c”,!
“r14979e6a941-0-1” : “c”!
}!
}!
{!
_id : “2:/home/john”,!
name : { “r14979e4b424-0-1” : “john” },!
_deleted : { “r14979e4b424-0-1” : “false” },!
_commitRoot : { “r14979e4b424-0-1” : “1” }!
}!
{!
_id : “3:/home/john/profile”,!
avatar : { “r14979e4b424-0-1” : <bin> },!
_deleted : { “r14979e4b424-0-1” : “false” },!
_commitRoot : { “r14979e4b424-0-1” : “1” }!
}!
{!
_id : “1:/home”,!
,! _deleted : { “r14979e1b312-0-1” : “false” },!
se” },! _revisions : {!
1” }! “r14979e1b312-0-1” : “c”,!
“r14979e4b424-0-1” : “c”!
}!
}!
{!
_id : “3:/home/john/profile”,!
avatar : {!
“r14979e4b424-0-1” : <bin>!
},!
_deleted : {!
“r14979e4b424-0-1” : “false”!
},!
_commitRoot : {!
“r14979e4b424-0-1” : “1” !
}!
}!
{! T-1
_id : “3:/home/john/profile”,!
avatar : {!
“r14979e4b424-0-1” : <bin>,!
“r14979e6c7a2-0-1” : <bin>!
},!
_deleted : {!
“r14979e4b424-0-1” : “false”!
},!
_commitRoot : {!
“r14979e4b424-0-1” : “1”,!
“r14979e6c7a2-0-1” : “1” !
}!
}!
{! T-1 T-2
_id : “3:/home/john/profile”,!
avatar : {!
“r14979e4b424-0-1” : <bin>,!
“r14979e6c7a2-0-1” : <bin>,!
“r14979e6c7a3-0-1” : <bin>!
},!
_deleted : {!
“r14979e4b424-0-1” : “false”!
},!
_commitRoot : {!
“r14979e4b424-0-1” : “1”,!
“r14979e6c7a2-0-1” : “1”,!
“r14979e6c7a3-0-1” : “1”!
}!
}!
{! T-2
_id : “1:/home”,!
_deleted : { !
“r14979e1b312-0-1” : “false”!
},!
_revisions : {!
“r14979e1b312-0-1” : “c”!
},!
_collisions : {!
“r14979e6c7a2-0-1” : “true”!
}!
}!
{! T-1 T-2
_id : “1:/home”,!
_deleted : { !
“r14979e1b312-0-1” : “false”!
},!
_revisions : {!
},!
“r14979e1b312-0-1” : “c”! ✗
_collisions : {!
“r14979e6c7a2-0-1” : “true”!
}!
}!
{! T-1 T-2
_id : “1:/home”,!
_deleted : { !
“r14979e1b312-0-1” : “false”!
},!
_revisions : {!
“r14979e1b312-0-1”
“r14979e6c7a3-0-1”
: “c”,!
: “c”!
✗
},!
_collisions : {!
“r14979e6c7a2-0-1” : “true”!
}!
}!
{!
_id : “1:/home”, !
“_collisions.r14979e6c7a3-0-1” : { $exists : false }!
}!
{! T-1
_id : “3:/home/john/profile”,!
avatar : {!
“r14979e4b424-0-1” : <bin>,!
“r14979e6c7a2-0-1” : <bin>,!
“r14979e6c7a3-0-1” : <bin>!
},!
_deleted : {!
“r14979e4b424-0-1” : “false”!
},!
_commitRoot : {!
“r14979e4b424-0-1” : “1”,!
“r14979e6c7a2-0-1” : “1”,!
“r14979e6c7a3-0-1” : “1”!
}!
}!
GridFS
file chunk 0
chunk 1
chunk N
Binary
Oak
Chunk Chunk
0x38a7 0x8f91
Chunk
0xc92a
0x38a7
Oak
Chunk Chunk
0x38a7 0x8f91
Chunk
0xc92a
0x38a7 0x8f91
Oak
Chunk Chunk
0x38a7 0x8f91
Chunk
0xc92a
Chunk
0xc92a
Chunk
0xc92a
⊖ Garbage collection