SlideShare uma empresa Scribd logo
1 de 25
User Content after JCR
Warning: This will be a low level technical presentation.




                              Dr Ian Boston
                             Timefields Ltd
                          OAE Server Team Lead
Content


                          Content Management
                                   Enterprise               Social
100


75


50


25


 0
      Writers   Anon Readers   All Readers   Read Concurrency   Write Concurrency   Acess Control
JSR-170, JSR-283, JSR-333, JCR




Any guesses what type of content management ?
Jackrabbit
                  concurrent




              Session
              ItemCache
                concurrent read




             Shared Item
               Cache
                Single Threaded



                  PM
Jackrabbit ACLs
                     concurrent




                  Session
                                      concurrent


                  ItemCache          Session
                   concurrent read
                                     ItemCache
              Shared Item
                Cache                 Singleton
                   Single Threaded
                                      Read Bypass

                     PM
Jackrabbit Cluster

        Single Threaded         Single Threaded     Single Threaded




          PM                      PM                  PM




                                  Single Threaded




                                Shared
                                Journal

                          Lock Step Sequence
                                Replay
Social Content Store Requirements

                             Jackrabbit       Social Content
High Concurrency
                            40
No Synchronisation
                            20
Lock free
                             0
                             Session footprint in K
Light Weight Sessions
Short Lived Sessions
                  Simple
 Flat Hierarchies          Clustering, Scaling
 Versioning, ACLs           Storage Agnostic
Sparse Map Concept

Map Addressing
         KeySpace     ColumnFamily RowID
                                           Map


Map Storage
              cA cB cC cD
 RowID        v1      v2 v9
 RowID        v1 v2
Sparse Map Concept updates



                               cA cB cC cD
                         RowID v1    v2 v9

      cC cD
               Update
      v8 del

                               cA cB cC cD
                         RowID v1    v8
Hierarchy Model


            JCR                          Sparse
 Parent                         Parent
     list of children   child                     child
                        child                        hash(parent)
                                 find all         child
                        child
 iterate                         nodes               hash(parent)
  list of                          with           child
children                        hash(par             hash(parent)
property                           ent)
              Fast Listing                   Slow Listing
Hierarchy Model


       JCR               Sparse


  /                   /
  /child              /child
  /child/subchild     /child/subchild
ws2:/child/subchild   alternate-root1
                      alternate-root1
                      alternate-root1/childa
                      alternate-rootn
                      alternate-rootn/childb
Threading Model
     shared          Not thread safe, not shared between threads, no sync,
                                        no locks, 1K size
  Repository          Session
                         AccessConrtrolManager
                            ContentManager
                            AuthorizableManager
 Storage Client API

        shared

 StorageClientPool         StorageClient

                                   Thread Bound Long Lived

                          Persistence Connection
Caching

ContentManager
 CachingManager
     SharedCache                  StorageCacheManager.get
     concurrent, write through,        ContentCache()
         Immutable values




                                      Memory Bundle

                                   EhCache     Infinispan
Objects

 Exposed Objects
                    UserInternal GroupInternal
Content                   User Group
 InternalContent             Authorizable

 Manipulation Objects
 AclModification
Data Formats (Authorizables)
Authorizable
               id(string)                    map addressing
            name(string)
             type(string)
         principals(string[])                                  n:au:ieb
User                                                      keyspace
                                                              Column Family
         password(string)
                                                                          rowid

Group
         members(string[])




  members(string[])       A key value pair named members containing a String[]

  versionId(string)       A key value pair where the key is a versionId and the value is a String
Data Formats (Content)
 Content                          map addressing
    _:cid(string)
                         to Structure Map n:cn:a/path/to/content
  _path(string)
                                          keyspace
parenthash(string)                            Column Family     rowid




         _:id(string)
        _path(string)    to Content Map
                                           n:cn:d4f3s3g3sft
          _blockId
                                            keyspace
      _blockId/streamA                          Column Family     rowid




           StreamContentHelper Files
            BlockContentHelper Maps of byte[]
Data Formats (ACL)
    ACL                               map addressing
 principal@g(int)          to ACL Map
                                        n:ac:cn;a/path/to/content
 principal@d(int)
                                    keyspace
                                        Column Family   rowid


Static ACE                  00000001          read 0x0001
    ieb@d(int)              00000010          write 0x0002
    ieb@g(int)              00000100          delete 0x0004
Token ACE                   0001.....         readACL 0x1000
  _tp_3ef45tr3w3e@g(int)    0010.....         writeACL 0x2000
    _secretKey(String)      0100.....         deleteACL 0x4000
Content Versioning
 Content                                  map addressing
    _:cid(string)
                                 to Structure Map n:cn:a/path/to/content
  _path(string)
                                                  keyspace
parenthash(string)                                    Column Family     rowid




        _:id(string)
       _path(string)             to Content Map
                                                   n:cn:d4f3s3g3sft
      _versionHistoryId
                                                    keyspace
     _previousVersion                                   Column Family     rowid

                                                _:id(string)               _:id(string)
                                               _path(string)              _path(string)
             versionId(string)
                                             _versionHistoryId          _versionHistoryId
             versionId(string)
                                             _previousVersion           _previousVersion
                      ms timestamp             _nextVersion               _nextVersion
Content Linking
 Content                           map addressing
    _:cid(string)
                          to Structure Map n:cn:a/path/to/content
  _path(string)
                                           keyspace
parenthash(string)                             Column Family     rowid




        _:id(string)
       _path(string)      to Content Map
                                            n:cn:d4f3s3g3sft
      _versionHistoryId
                                             keyspace
     _previousVersion                            Column Family     rowid



    _:cid(string)
  _path(string)
parenthash(string)
Cassandra Driver


keyspace, columnFamily, key
values -> byte[] in columns
incremental updates
bodies are rows of byte[], 64x1MB per row
find operations via lookup
                   Indexing and Finding

      n:au:? user=Ian
      user:au:ieb ieb(ieb), ib236(ib236)
Memory Driver


keyspace, columnFamily, key
values -> byte[] in columns
incremental updates
bodies are rows of byte[], 64x1MB per row
find operations via lookup
                  Indexing and Finding

      n:au:? user=Ian
      user:au:ieb ieb(ieb), ib236(ib236)

 ConcurrentHashMap
JDBC Driver


keyspace, columnFamily, hash(key)
 Whole Map -> byte[] in columns
Column Family Selects Table
 bodies on Shared Filesystem
 find operations via query
              rowid column   value

DB by DDL and SQL file
 Derby, Oracle, MySQL, PostgreSQL
Shard JDBC Driver


keyspace, columnFamily, hash(key)


     lookup SQL Statement
       lookup Connection



  DB(a-h)       DB(g-m)      DB(m-z)
Core Sparse Performance

100% Concurrent, no waits
1K Sessions

                 Memory    Cassandra   MySQL

     User Adds   33000/s    3500/s     100/s



Pure Jar, can be used without OSGi
Nakamura


     Jackrabbit              Sparse


 Application Content      User Content


 Enterprise Content       Social Content

    Updated every month     Updated every ms

Mais conteúdo relacionado

Mais procurados

Vk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtugVk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtugketan_patel25
 
Hummingbird - Open Source for Small Satellites - GSAW 2012
Hummingbird - Open Source for Small Satellites - GSAW 2012Hummingbird - Open Source for Small Satellites - GSAW 2012
Hummingbird - Open Source for Small Satellites - GSAW 2012Logica_hummingbird
 
What is new and cool j2se & java
What is new and cool j2se & javaWhat is new and cool j2se & java
What is new and cool j2se & javaEugene Bogaart
 
High Performance Ruby - Golden Gate RubyConf 2012
High Performance Ruby - Golden Gate RubyConf 2012High Performance Ruby - Golden Gate RubyConf 2012
High Performance Ruby - Golden Gate RubyConf 2012Charles Nutter
 

Mais procurados (7)

Vk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtugVk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtug
 
perl_objects
perl_objectsperl_objects
perl_objects
 
Hummingbird - Open Source for Small Satellites - GSAW 2012
Hummingbird - Open Source for Small Satellites - GSAW 2012Hummingbird - Open Source for Small Satellites - GSAW 2012
Hummingbird - Open Source for Small Satellites - GSAW 2012
 
What is new and cool j2se & java
What is new and cool j2se & javaWhat is new and cool j2se & java
What is new and cool j2se & java
 
High Performance Ruby - Golden Gate RubyConf 2012
High Performance Ruby - Golden Gate RubyConf 2012High Performance Ruby - Golden Gate RubyConf 2012
High Performance Ruby - Golden Gate RubyConf 2012
 
Zaharia spark-scala-days-2012
Zaharia spark-scala-days-2012Zaharia spark-scala-days-2012
Zaharia spark-scala-days-2012
 
ScalaQuery
ScalaQueryScalaQuery
ScalaQuery
 

Semelhante a Sparse Content Map Storage System

The Kumofs Project and MessagePack-RPC
The Kumofs Project and MessagePack-RPCThe Kumofs Project and MessagePack-RPC
The Kumofs Project and MessagePack-RPCSadayuki Furuhashi
 
Acunu & OCaml: Experience Report, CUFP
Acunu & OCaml: Experience Report, CUFPAcunu & OCaml: Experience Report, CUFP
Acunu & OCaml: Experience Report, CUFPAcunu
 
Actors, a Unifying Pattern for Scalable Concurrency | C4 2006
Actors, a Unifying Pattern for Scalable Concurrency | C4 2006 Actors, a Unifying Pattern for Scalable Concurrency | C4 2006
Actors, a Unifying Pattern for Scalable Concurrency | C4 2006 Real Nobile
 
How to Stop Worrying and Start Caching in Java
How to Stop Worrying and Start Caching in JavaHow to Stop Worrying and Start Caching in Java
How to Stop Worrying and Start Caching in Javasrisatish ambati
 
Sperasoft‬ talks j point 2015
Sperasoft‬ talks j point 2015Sperasoft‬ talks j point 2015
Sperasoft‬ talks j point 2015Sperasoft
 
The InfoGrid Graph DataBase
The InfoGrid Graph DataBaseThe InfoGrid Graph DataBase
The InfoGrid Graph DataBaseInfoGrid.org
 
Cache is King ( Or How To Stop Worrying And Start Caching in Java) at Chicago...
Cache is King ( Or How To Stop Worrying And Start Caching in Java) at Chicago...Cache is King ( Or How To Stop Worrying And Start Caching in Java) at Chicago...
Cache is King ( Or How To Stop Worrying And Start Caching in Java) at Chicago...srisatish ambati
 
W3C HTML5 KIG-Typed Arrays
W3C HTML5 KIG-Typed ArraysW3C HTML5 KIG-Typed Arrays
W3C HTML5 KIG-Typed ArraysChanghwan Yi
 
Spark and Shark: Lightning-Fast Analytics over Hadoop and Hive Data
Spark and Shark: Lightning-Fast Analytics over Hadoop and Hive DataSpark and Shark: Lightning-Fast Analytics over Hadoop and Hive Data
Spark and Shark: Lightning-Fast Analytics over Hadoop and Hive DataJetlore
 
Atlanta Spark User Meetup 09 22 2016
Atlanta Spark User Meetup 09 22 2016Atlanta Spark User Meetup 09 22 2016
Atlanta Spark User Meetup 09 22 2016Chris Fregly
 
Doug Cutting on the State of the Hadoop Ecosystem
Doug Cutting on the State of the Hadoop EcosystemDoug Cutting on the State of the Hadoop Ecosystem
Doug Cutting on the State of the Hadoop EcosystemCloudera, Inc.
 
Test-driven development: a case study
Test-driven development: a case studyTest-driven development: a case study
Test-driven development: a case studyMaciej Pasternacki
 
Millions quotes per second in pure java
Millions quotes per second in pure javaMillions quotes per second in pure java
Millions quotes per second in pure javaRoman Elizarov
 
NOSQL and Cassandra
NOSQL and CassandraNOSQL and Cassandra
NOSQL and Cassandrarantav
 
Chapter 6 data types
Chapter 6 data types Chapter 6 data types
Chapter 6 data types Arafat X
 
Fast and Parallel Webpage Layout
Fast and Parallel Webpage LayoutFast and Parallel Webpage Layout
Fast and Parallel Webpage LayoutTian Pan
 

Semelhante a Sparse Content Map Storage System (20)

The Kumofs Project and MessagePack-RPC
The Kumofs Project and MessagePack-RPCThe Kumofs Project and MessagePack-RPC
The Kumofs Project and MessagePack-RPC
 
Acunu & OCaml: Experience Report, CUFP
Acunu & OCaml: Experience Report, CUFPAcunu & OCaml: Experience Report, CUFP
Acunu & OCaml: Experience Report, CUFP
 
Actors, a Unifying Pattern for Scalable Concurrency | C4 2006
Actors, a Unifying Pattern for Scalable Concurrency | C4 2006 Actors, a Unifying Pattern for Scalable Concurrency | C4 2006
Actors, a Unifying Pattern for Scalable Concurrency | C4 2006
 
NoSQL @ Qbranch -2010-04-15
NoSQL @ Qbranch -2010-04-15NoSQL @ Qbranch -2010-04-15
NoSQL @ Qbranch -2010-04-15
 
How to Stop Worrying and Start Caching in Java
How to Stop Worrying and Start Caching in JavaHow to Stop Worrying and Start Caching in Java
How to Stop Worrying and Start Caching in Java
 
GPU programming
GPU programmingGPU programming
GPU programming
 
Java14
Java14Java14
Java14
 
Sperasoft‬ talks j point 2015
Sperasoft‬ talks j point 2015Sperasoft‬ talks j point 2015
Sperasoft‬ talks j point 2015
 
The InfoGrid Graph DataBase
The InfoGrid Graph DataBaseThe InfoGrid Graph DataBase
The InfoGrid Graph DataBase
 
Cache is King ( Or How To Stop Worrying And Start Caching in Java) at Chicago...
Cache is King ( Or How To Stop Worrying And Start Caching in Java) at Chicago...Cache is King ( Or How To Stop Worrying And Start Caching in Java) at Chicago...
Cache is King ( Or How To Stop Worrying And Start Caching in Java) at Chicago...
 
W3C HTML5 KIG-Typed Arrays
W3C HTML5 KIG-Typed ArraysW3C HTML5 KIG-Typed Arrays
W3C HTML5 KIG-Typed Arrays
 
Spark and Shark: Lightning-Fast Analytics over Hadoop and Hive Data
Spark and Shark: Lightning-Fast Analytics over Hadoop and Hive DataSpark and Shark: Lightning-Fast Analytics over Hadoop and Hive Data
Spark and Shark: Lightning-Fast Analytics over Hadoop and Hive Data
 
Atlanta Spark User Meetup 09 22 2016
Atlanta Spark User Meetup 09 22 2016Atlanta Spark User Meetup 09 22 2016
Atlanta Spark User Meetup 09 22 2016
 
Doug Cutting on the State of the Hadoop Ecosystem
Doug Cutting on the State of the Hadoop EcosystemDoug Cutting on the State of the Hadoop Ecosystem
Doug Cutting on the State of the Hadoop Ecosystem
 
Test-driven development: a case study
Test-driven development: a case studyTest-driven development: a case study
Test-driven development: a case study
 
Millions quotes per second in pure java
Millions quotes per second in pure javaMillions quotes per second in pure java
Millions quotes per second in pure java
 
Stucorner java-training-syllabus
Stucorner java-training-syllabusStucorner java-training-syllabus
Stucorner java-training-syllabus
 
NOSQL and Cassandra
NOSQL and CassandraNOSQL and Cassandra
NOSQL and Cassandra
 
Chapter 6 data types
Chapter 6 data types Chapter 6 data types
Chapter 6 data types
 
Fast and Parallel Webpage Layout
Fast and Parallel Webpage LayoutFast and Parallel Webpage Layout
Fast and Parallel Webpage Layout
 

Último

Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
week 1 cookery 8 fourth - quarter .pptx
week 1 cookery 8  fourth  -  quarter .pptxweek 1 cookery 8  fourth  -  quarter .pptx
week 1 cookery 8 fourth - quarter .pptxJonalynLegaspi2
 
Scientific Writing :Research Discourse
Scientific  Writing :Research  DiscourseScientific  Writing :Research  Discourse
Scientific Writing :Research DiscourseAnita GoswamiGiri
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
ROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxVanesaIglesias10
 
Narcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdfNarcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdfPrerana Jadhav
 
Reading and Writing Skills 11 quarter 4 melc 1
Reading and Writing Skills 11 quarter 4 melc 1Reading and Writing Skills 11 quarter 4 melc 1
Reading and Writing Skills 11 quarter 4 melc 1GloryAnnCastre1
 
Grade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptxGrade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptxkarenfajardo43
 
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...Nguyen Thanh Tu Collection
 
How to Make a Duplicate of Your Odoo 17 Database
How to Make a Duplicate of Your Odoo 17 DatabaseHow to Make a Duplicate of Your Odoo 17 Database
How to Make a Duplicate of Your Odoo 17 DatabaseCeline George
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Seán Kennedy
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management SystemChristalin Nelson
 
Using Grammatical Signals Suitable to Patterns of Idea Development
Using Grammatical Signals Suitable to Patterns of Idea DevelopmentUsing Grammatical Signals Suitable to Patterns of Idea Development
Using Grammatical Signals Suitable to Patterns of Idea Developmentchesterberbo7
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxlancelewisportillo
 
Mythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITWMythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITWQuiz Club NITW
 
Unraveling Hypertext_ Analyzing Postmodern Elements in Literature.pptx
Unraveling Hypertext_ Analyzing  Postmodern Elements in  Literature.pptxUnraveling Hypertext_ Analyzing  Postmodern Elements in  Literature.pptx
Unraveling Hypertext_ Analyzing Postmodern Elements in Literature.pptxDhatriParmar
 
How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17Celine George
 

Último (20)

Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
week 1 cookery 8 fourth - quarter .pptx
week 1 cookery 8  fourth  -  quarter .pptxweek 1 cookery 8  fourth  -  quarter .pptx
week 1 cookery 8 fourth - quarter .pptx
 
Scientific Writing :Research Discourse
Scientific  Writing :Research  DiscourseScientific  Writing :Research  Discourse
Scientific Writing :Research Discourse
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
ROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptx
 
Narcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdfNarcotic and Non Narcotic Analgesic..pdf
Narcotic and Non Narcotic Analgesic..pdf
 
Reading and Writing Skills 11 quarter 4 melc 1
Reading and Writing Skills 11 quarter 4 melc 1Reading and Writing Skills 11 quarter 4 melc 1
Reading and Writing Skills 11 quarter 4 melc 1
 
Grade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptxGrade Three -ELLNA-REVIEWER-ENGLISH.pptx
Grade Three -ELLNA-REVIEWER-ENGLISH.pptx
 
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
31 ĐỀ THI THỬ VÀO LỚP 10 - TIẾNG ANH - FORM MỚI 2025 - 40 CÂU HỎI - BÙI VĂN V...
 
Mattingly "AI & Prompt Design: Large Language Models"
Mattingly "AI & Prompt Design: Large Language Models"Mattingly "AI & Prompt Design: Large Language Models"
Mattingly "AI & Prompt Design: Large Language Models"
 
How to Make a Duplicate of Your Odoo 17 Database
How to Make a Duplicate of Your Odoo 17 DatabaseHow to Make a Duplicate of Your Odoo 17 Database
How to Make a Duplicate of Your Odoo 17 Database
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...
 
Transaction Management in Database Management System
Transaction Management in Database Management SystemTransaction Management in Database Management System
Transaction Management in Database Management System
 
Using Grammatical Signals Suitable to Patterns of Idea Development
Using Grammatical Signals Suitable to Patterns of Idea DevelopmentUsing Grammatical Signals Suitable to Patterns of Idea Development
Using Grammatical Signals Suitable to Patterns of Idea Development
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
 
Paradigm shift in nursing research by RS MEHTA
Paradigm shift in nursing research by RS MEHTAParadigm shift in nursing research by RS MEHTA
Paradigm shift in nursing research by RS MEHTA
 
Mythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITWMythology Quiz-4th April 2024, Quiz Club NITW
Mythology Quiz-4th April 2024, Quiz Club NITW
 
Unraveling Hypertext_ Analyzing Postmodern Elements in Literature.pptx
Unraveling Hypertext_ Analyzing  Postmodern Elements in  Literature.pptxUnraveling Hypertext_ Analyzing  Postmodern Elements in  Literature.pptx
Unraveling Hypertext_ Analyzing Postmodern Elements in Literature.pptx
 
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of EngineeringFaculty Profile prashantha K EEE dept Sri Sairam college of Engineering
Faculty Profile prashantha K EEE dept Sri Sairam college of Engineering
 
How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17How to Fix XML SyntaxError in Odoo the 17
How to Fix XML SyntaxError in Odoo the 17
 

Sparse Content Map Storage System

  • 1. User Content after JCR Warning: This will be a low level technical presentation. Dr Ian Boston Timefields Ltd OAE Server Team Lead
  • 2. Content Content Management Enterprise Social 100 75 50 25 0 Writers Anon Readers All Readers Read Concurrency Write Concurrency Acess Control
  • 3. JSR-170, JSR-283, JSR-333, JCR Any guesses what type of content management ?
  • 4. Jackrabbit concurrent Session ItemCache concurrent read Shared Item Cache Single Threaded PM
  • 5. Jackrabbit ACLs concurrent Session concurrent ItemCache Session concurrent read ItemCache Shared Item Cache Singleton Single Threaded Read Bypass PM
  • 6. Jackrabbit Cluster Single Threaded Single Threaded Single Threaded PM PM PM Single Threaded Shared Journal Lock Step Sequence Replay
  • 7. Social Content Store Requirements Jackrabbit Social Content High Concurrency 40 No Synchronisation 20 Lock free 0 Session footprint in K Light Weight Sessions Short Lived Sessions Simple Flat Hierarchies Clustering, Scaling Versioning, ACLs Storage Agnostic
  • 8. Sparse Map Concept Map Addressing KeySpace ColumnFamily RowID Map Map Storage cA cB cC cD RowID v1 v2 v9 RowID v1 v2
  • 9. Sparse Map Concept updates cA cB cC cD RowID v1 v2 v9 cC cD Update v8 del cA cB cC cD RowID v1 v8
  • 10. Hierarchy Model JCR Sparse Parent Parent list of children child child child hash(parent) find all child child iterate nodes hash(parent) list of with child children hash(par hash(parent) property ent) Fast Listing Slow Listing
  • 11. Hierarchy Model JCR Sparse / / /child /child /child/subchild /child/subchild ws2:/child/subchild alternate-root1 alternate-root1 alternate-root1/childa alternate-rootn alternate-rootn/childb
  • 12. Threading Model shared Not thread safe, not shared between threads, no sync, no locks, 1K size Repository Session AccessConrtrolManager ContentManager AuthorizableManager Storage Client API shared StorageClientPool StorageClient Thread Bound Long Lived Persistence Connection
  • 13. Caching ContentManager CachingManager SharedCache StorageCacheManager.get concurrent, write through, ContentCache() Immutable values Memory Bundle EhCache Infinispan
  • 14. Objects Exposed Objects UserInternal GroupInternal Content User Group InternalContent Authorizable Manipulation Objects AclModification
  • 15. Data Formats (Authorizables) Authorizable id(string) map addressing name(string) type(string) principals(string[]) n:au:ieb User keyspace Column Family password(string) rowid Group members(string[]) members(string[]) A key value pair named members containing a String[] versionId(string) A key value pair where the key is a versionId and the value is a String
  • 16. Data Formats (Content) Content map addressing _:cid(string) to Structure Map n:cn:a/path/to/content _path(string) keyspace parenthash(string) Column Family rowid _:id(string) _path(string) to Content Map n:cn:d4f3s3g3sft _blockId keyspace _blockId/streamA Column Family rowid StreamContentHelper Files BlockContentHelper Maps of byte[]
  • 17. Data Formats (ACL) ACL map addressing principal@g(int) to ACL Map n:ac:cn;a/path/to/content principal@d(int) keyspace Column Family rowid Static ACE 00000001 read 0x0001 ieb@d(int) 00000010 write 0x0002 ieb@g(int) 00000100 delete 0x0004 Token ACE 0001..... readACL 0x1000 _tp_3ef45tr3w3e@g(int) 0010..... writeACL 0x2000 _secretKey(String) 0100..... deleteACL 0x4000
  • 18. Content Versioning Content map addressing _:cid(string) to Structure Map n:cn:a/path/to/content _path(string) keyspace parenthash(string) Column Family rowid _:id(string) _path(string) to Content Map n:cn:d4f3s3g3sft _versionHistoryId keyspace _previousVersion Column Family rowid _:id(string) _:id(string) _path(string) _path(string) versionId(string) _versionHistoryId _versionHistoryId versionId(string) _previousVersion _previousVersion ms timestamp _nextVersion _nextVersion
  • 19. Content Linking Content map addressing _:cid(string) to Structure Map n:cn:a/path/to/content _path(string) keyspace parenthash(string) Column Family rowid _:id(string) _path(string) to Content Map n:cn:d4f3s3g3sft _versionHistoryId keyspace _previousVersion Column Family rowid _:cid(string) _path(string) parenthash(string)
  • 20. Cassandra Driver keyspace, columnFamily, key values -> byte[] in columns incremental updates bodies are rows of byte[], 64x1MB per row find operations via lookup Indexing and Finding n:au:? user=Ian user:au:ieb ieb(ieb), ib236(ib236)
  • 21. Memory Driver keyspace, columnFamily, key values -> byte[] in columns incremental updates bodies are rows of byte[], 64x1MB per row find operations via lookup Indexing and Finding n:au:? user=Ian user:au:ieb ieb(ieb), ib236(ib236) ConcurrentHashMap
  • 22. JDBC Driver keyspace, columnFamily, hash(key) Whole Map -> byte[] in columns Column Family Selects Table bodies on Shared Filesystem find operations via query rowid column value DB by DDL and SQL file Derby, Oracle, MySQL, PostgreSQL
  • 23. Shard JDBC Driver keyspace, columnFamily, hash(key) lookup SQL Statement lookup Connection DB(a-h) DB(g-m) DB(m-z)
  • 24. Core Sparse Performance 100% Concurrent, no waits 1K Sessions Memory Cassandra MySQL User Adds 33000/s 3500/s 100/s Pure Jar, can be used without OSGi
  • 25. Nakamura Jackrabbit Sparse Application Content User Content Enterprise Content Social Content Updated every month Updated every ms

Notas do Editor

  1. \n \n
  2. \n \n
  3. \n \n
  4. \n \n
  5. \n \n
  6. \n \n
  7. \n \n
  8. \n \n
  9. \n \n
  10. \n \n
  11. \n \n
  12. \n \n
  13. \n \n
  14. \n \n
  15. \n \n
  16. \n \n
  17. \n \n
  18. \n \n
  19. \n \n
  20. \n \n
  21. \n \n
  22. \n \n
  23. \n \n
  24. \n \n
  25. \n \n