SlideShare a Scribd company logo
1 of 28
Download to read offline
Implementing a
JSR-283 Content Repository
          in PHP
      Karsten Dambekalns
      karsten@typo3.org


                      Inspiring people to
                      share
Introduction to JCR




                      Inspiring people to
                      share
What is a Content Repository
  A Content Repository (CR) allows the storage and retrieval of
  arbitrary content as nodes and properties in a tree structure

  The node types as well as the tree structure can be freely defined
  by the user of the CR

  Binary content can stored and queried as effectively as textual
  content

  The API for using a CR is standardized in the JR-170 and JSR-283
  specifications

  The API abstracts the actual data storage used (RDBMS, ODBMS,
  files, ...)
                                            Inspiring people to
                                            share
Nodes and Properties




                  Inspiring people to
                  share
Existing implementations
  Jackrabbit is the reference implementation, available as open
  source from the Apache Foundation

  Day CRX is the commercial CR implementation from the quot;inventorquot;
  of JSR-170, Day Software

  Other implementations are eXo JCR and Jeceira, the latter also
  being dead, and others

  JSR-170 connectors exist Alfresco, BEA Portal Server, IBM Domino
  and others




                                           Inspiring people to
                                           share
PHP ports of the JSR-170 API
  Travis Swicegood ported the API to PHP in 2005 - project seems
  dead

  There is a port of the API available in the Jackrabbit sources,
  added 2005 - no relevant changes since then

  No JSR-283 port of the API today




                                             Inspiring people to
                                             share
Summary
 A Content Repository (CR) promises to solve a lot of the problems
 vendors of CMS currently have

 A stable standard with a fresh version in the making

 Various implementations exist, mostly in Java

 No PHP implementation of a CR exists




                                          Inspiring people to
                                          share
Introduction to TYPO3 5.0




                   Inspiring people to
                   share
TYPO3 5.0 Projects
  During the first year of the TYPO3 5.0 project it became clear that
  we'd do more than quot;just write a new CMSquot;

  We started with some groundwork, resulting in the TYPO3
  Framework

  We want to use a CR for the new version, so we need to write the
  TYPO3 Content Repository

  And of course we still have the ultimate goal to come up with a
  new TYPO3 CMS




                                            Inspiring people to
                                            share
TYPO3 Framework
  Provides a robust and advanced programming framework with
  features like Dependency Injection, Aspect Oriented Programming,
  MVC, Component and Package Management, enhanced Reflection
  and more

  Inspired by the most popular frameworks and toolkits from
  Smalltalk, Python, Ruby and Java available today, picking the
  best concepts, skipping the annoyances

  Has already come a long way, check out the session by Robert
  Lemke tomorrow, 11:15!

  Not tied to TYPO3 CMS, can be used for any PHP6-based project

                                           Inspiring people to
                                           share
TYPO3 CMS
  Successor to TYPO3 4.x., which is the result of 10 years of
  development

  Start from scratch, but keep the soul of TYPO3

  Should provide lower complexity, a better data model, make use
  of PHP6 features, be more extensible, ...




                                             Inspiring people to
                                             share
TYPO3 Content Repository
  Goal is a pure PHP implementation of JSR-283, but functionality
  needed for TYPO3 CMS has priority

  Will take advantage of the TYPO3 Framework, but not be tied to
  the TYPO3 CMS.

  Could eventually become the standard CR for the PHP
  community?!




                                           Inspiring people to
                                           share
Summary
 TYPO3 5.0 will be a major upgrade to TYPO3 - on all fronts

 The TYPO3 Framework serves as a solid base for development




                                          Inspiring people to
                                          share
TYPO3 Content Repository




                  Inspiring people to
                  share
Development model
  Test-driven development with continuous integration

  Based on TYPO3 Framework




                                          Inspiring people to
                                          share
Porting the JSR-283 API
  Facing typing issues, some Java types simply do not exist in PHP

  Binary data will probably be Resource Manager handles instead of
  streams

  Interfaces will not be ported up-front, but as we need them

  Features prioritized according to the needs of the TYPO3 CMS
  project




                                           Inspiring people to
                                           share
Actual data storage
  The underlying storage of the TYPO3CR will be a RDBMS

  Currently only SQLite through PDO is used

  Easy to use for development and unit testing

  The use of PDO already enables any PDO-supported database

  Specialized DB connectors will follow, using optimized queries,
  stored procedures, ...




                                              Inspiring people to
                                              share
Data storage techniques
  Basically we need to store a simple tree

  Read access must be fast, write access should be fast, as the
  majority of requests are read requests

  Traditional approach as used in TYPO3 today is to store a triplet
  (uid,pid,sorting)

  Alternative & faster method: Pre/Post Plane Encoding




                                             Inspiring people to
                                             share
Pre/Post Plane Encoding
  Stores number determined by pre-order and post-order tree
  traversal

  Allows to partition the nodes into four regions, as shown for node
  ƒ




                                            Inspiring people to
                                           share
Pre/Post Plane Encoding
  Very fast read access, e.g. a single SELECT to query all ancestors
  to a node ƒ

  SELECT * FROM table WHERE pre < ƒ.pre AND post > ƒ.post

  Write access can be sped up by various approaches like spacing
  and variable length indices for the pre/post numbers or by
  partitioning the data over more tables




                                             Inspiring people to
                                             share
Querying the TYPO3 CR
  Using getRootNode() and friends from the API

  Using XPath queries

  Using SQL queries




                                          Inspiring people to
                                          share
XPath support for TYPO3R
  To enable XPath we need

  •   a XPath parser

  •   an efficient way to transform a XPath query into SQL for the
      used low-level data structure

  The latter is a lot easier when storing the tree pre/post plane
  encoded




                                             Inspiring people to
                                             share
SQL support for TYPO3R
  Using SQL we need

  •   a (simple) SQL parser

  •   an efficient way to transform that SQL into equivalent SQL for
      the used low-level data structure

  This still needs to be investigated, possible approaches include
  storing a reference to the parent node or even using the pre/post
  plane only as a cache for XPath read queries, optimizing the
  native storage for SQL read queries




                                            Inspiring people to
                                            share
Extensions to JSR-283
  A vendor may choose to offer additional features in his CR
  implementation

  The TYPO3CR will offer support for

  •   Data persistency through code annotations

  •   Automatic node type generation based on class members

  •   Rules for setting up virtual root nodes based on node types




                                            Inspiring people to
                                            share
Current status
  Currently the code supports a subset of the required features of
  levels 1 & 2 and the optional parts of the JSR-283 specification

  •   Basic read & write access

  •   Namespace registration

  •   Node type discovery and registration

  Data storage uses the naive approach known from TYPO3 4.x

  Have a look at http://5-0.dev.typo3.org/trac/TYPO3/wiki/TYPO3CR
  and the Subversion repository for up-to-date information


                                             Inspiring people to
                                             share
Future plans
  Implementing missing required and optional features according
  to the JSR-283 specification

  •   Workspaces and versioning will require special attention, as
      they are key features for the CMS as well!

  Implement native RDBMS connectors making use of specifically
  tuned queries and product-specific features

  Performance tests and tuning as needed




                                             Inspiring people to
                                             share
Summary
 Implementing the specification is not an easy task, but doable

 For the various parts a lot of research has already been done in
 the past

 The repository is a major improvement over the current way of
 storing data

 The whole PHP community could^Wwill benefit!




                                           Inspiring people to
                                           share
Implementing a JSR-283 Content Repository in PHP

More Related Content

What's hot

Extreme Availability using Oracle 12c Features: Your very last system shutdown?
Extreme Availability using Oracle 12c Features: Your very last system shutdown?Extreme Availability using Oracle 12c Features: Your very last system shutdown?
Extreme Availability using Oracle 12c Features: Your very last system shutdown?Toronto-Oracle-Users-Group
 
Accelerating analytics workloads with Alluxio data orchestration and Intel® O...
Accelerating analytics workloads with Alluxio data orchestration and Intel® O...Accelerating analytics workloads with Alluxio data orchestration and Intel® O...
Accelerating analytics workloads with Alluxio data orchestration and Intel® O...Alluxio, Inc.
 
Hadoop 3 @ Hadoop Summit San Jose 2017
Hadoop 3 @ Hadoop Summit San Jose 2017Hadoop 3 @ Hadoop Summit San Jose 2017
Hadoop 3 @ Hadoop Summit San Jose 2017Junping Du
 
Keep your hadoop cluster at its best! v4
Keep your hadoop cluster at its best! v4Keep your hadoop cluster at its best! v4
Keep your hadoop cluster at its best! v4Chris Nauroth
 
Big data with HDFS and Mapreduce
Big data  with HDFS and MapreduceBig data  with HDFS and Mapreduce
Big data with HDFS and Mapreducesenthil0809
 
20191119 Cloud Native Java : GraalVM
20191119 Cloud Native Java : GraalVM20191119 Cloud Native Java : GraalVM
20191119 Cloud Native Java : GraalVMTaewan Kim
 
Big data - Apache Hadoop for Beginner's
Big data - Apache Hadoop for Beginner'sBig data - Apache Hadoop for Beginner's
Big data - Apache Hadoop for Beginner'ssenthil0809
 
Exploring Oracle Database 12c Multitenant best practices for your Cloud
Exploring Oracle Database 12c Multitenant best practices for your CloudExploring Oracle Database 12c Multitenant best practices for your Cloud
Exploring Oracle Database 12c Multitenant best practices for your Clouddyahalom
 
Flexible and Fast Storage for Deep Learning with Alluxio
Flexible and Fast Storage for Deep Learning with Alluxio Flexible and Fast Storage for Deep Learning with Alluxio
Flexible and Fast Storage for Deep Learning with Alluxio Alluxio, Inc.
 
23 Top .Net Core Libraries List Every Developer Must Know
23 Top .Net Core Libraries List Every Developer Must Know23 Top .Net Core Libraries List Every Developer Must Know
23 Top .Net Core Libraries List Every Developer Must KnowKaty Slemon
 
Tachyon meetup slides.
Tachyon meetup slides.Tachyon meetup slides.
Tachyon meetup slides.David Groozman
 
Meet hbase 2.0
Meet hbase 2.0Meet hbase 2.0
Meet hbase 2.0enissoz
 
Oracle Maximum Availability Architecture
Oracle Maximum Availability ArchitectureOracle Maximum Availability Architecture
Oracle Maximum Availability ArchitectureMarketingArrowECS_CZ
 
Oracle Database on Docker
Oracle Database on DockerOracle Database on Docker
Oracle Database on DockerFranck Pachot
 
AWS Summit Berlin 2012 Talk on Web Data Commons
AWS Summit Berlin 2012 Talk on Web Data CommonsAWS Summit Berlin 2012 Talk on Web Data Commons
AWS Summit Berlin 2012 Talk on Web Data CommonsHannes Mühleisen
 
Implementing High Availability Caching with Memcached
Implementing High Availability Caching with MemcachedImplementing High Availability Caching with Memcached
Implementing High Availability Caching with MemcachedGear6
 
Installing Postgres on Linux
Installing Postgres on LinuxInstalling Postgres on Linux
Installing Postgres on LinuxEDB
 

What's hot (20)

Extreme Availability using Oracle 12c Features: Your very last system shutdown?
Extreme Availability using Oracle 12c Features: Your very last system shutdown?Extreme Availability using Oracle 12c Features: Your very last system shutdown?
Extreme Availability using Oracle 12c Features: Your very last system shutdown?
 
Accelerating analytics workloads with Alluxio data orchestration and Intel® O...
Accelerating analytics workloads with Alluxio data orchestration and Intel® O...Accelerating analytics workloads with Alluxio data orchestration and Intel® O...
Accelerating analytics workloads with Alluxio data orchestration and Intel® O...
 
Hadoop 3 @ Hadoop Summit San Jose 2017
Hadoop 3 @ Hadoop Summit San Jose 2017Hadoop 3 @ Hadoop Summit San Jose 2017
Hadoop 3 @ Hadoop Summit San Jose 2017
 
Keep your hadoop cluster at its best! v4
Keep your hadoop cluster at its best! v4Keep your hadoop cluster at its best! v4
Keep your hadoop cluster at its best! v4
 
Big data with HDFS and Mapreduce
Big data  with HDFS and MapreduceBig data  with HDFS and Mapreduce
Big data with HDFS and Mapreduce
 
20191119 Cloud Native Java : GraalVM
20191119 Cloud Native Java : GraalVM20191119 Cloud Native Java : GraalVM
20191119 Cloud Native Java : GraalVM
 
Big data - Apache Hadoop for Beginner's
Big data - Apache Hadoop for Beginner'sBig data - Apache Hadoop for Beginner's
Big data - Apache Hadoop for Beginner's
 
Exploring Oracle Database 12c Multitenant best practices for your Cloud
Exploring Oracle Database 12c Multitenant best practices for your CloudExploring Oracle Database 12c Multitenant best practices for your Cloud
Exploring Oracle Database 12c Multitenant best practices for your Cloud
 
Oracle Database 12c : Multitenant
Oracle Database 12c : MultitenantOracle Database 12c : Multitenant
Oracle Database 12c : Multitenant
 
Flexible and Fast Storage for Deep Learning with Alluxio
Flexible and Fast Storage for Deep Learning with Alluxio Flexible and Fast Storage for Deep Learning with Alluxio
Flexible and Fast Storage for Deep Learning with Alluxio
 
Oow Ppt 2
Oow Ppt 2Oow Ppt 2
Oow Ppt 2
 
Vc++
Vc++Vc++
Vc++
 
23 Top .Net Core Libraries List Every Developer Must Know
23 Top .Net Core Libraries List Every Developer Must Know23 Top .Net Core Libraries List Every Developer Must Know
23 Top .Net Core Libraries List Every Developer Must Know
 
Tachyon meetup slides.
Tachyon meetup slides.Tachyon meetup slides.
Tachyon meetup slides.
 
Meet hbase 2.0
Meet hbase 2.0Meet hbase 2.0
Meet hbase 2.0
 
Oracle Maximum Availability Architecture
Oracle Maximum Availability ArchitectureOracle Maximum Availability Architecture
Oracle Maximum Availability Architecture
 
Oracle Database on Docker
Oracle Database on DockerOracle Database on Docker
Oracle Database on Docker
 
AWS Summit Berlin 2012 Talk on Web Data Commons
AWS Summit Berlin 2012 Talk on Web Data CommonsAWS Summit Berlin 2012 Talk on Web Data Commons
AWS Summit Berlin 2012 Talk on Web Data Commons
 
Implementing High Availability Caching with Memcached
Implementing High Availability Caching with MemcachedImplementing High Availability Caching with Memcached
Implementing High Availability Caching with Memcached
 
Installing Postgres on Linux
Installing Postgres on LinuxInstalling Postgres on Linux
Installing Postgres on Linux
 

Viewers also liked

M Learning Presentation
M Learning PresentationM Learning Presentation
M Learning Presentationrboskett
 
Digital Marketing e Mobile Marketing
Digital Marketing e Mobile MarketingDigital Marketing e Mobile Marketing
Digital Marketing e Mobile MarketingLeonardo Milan
 
обезлесяването в българия
обезлесяването в българияобезлесяването в българия
обезлесяването в българияRositsa Dimova
 
Pavilion N Bbrochure
Pavilion N BbrochurePavilion N Bbrochure
Pavilion N Bbrochureguesta00b88
 
ITALIAN STUDENTS PRESENTED
ITALIAN STUDENTS PRESENTEDITALIAN STUDENTS PRESENTED
ITALIAN STUDENTS PRESENTEDRositsa Dimova
 
What Is Social Media
What Is Social MediaWhat Is Social Media
What Is Social MediaThomas Martin
 
QR codes, text a librarian and more...
QR codes, text a librarian and more...QR codes, text a librarian and more...
QR codes, text a librarian and more...Andrew Walsh
 
Digital Tv In Cee (2012)
Digital Tv In Cee (2012)Digital Tv In Cee (2012)
Digital Tv In Cee (2012)wimvermeulen
 
Twitter an international strategy
Twitter   an international strategyTwitter   an international strategy
Twitter an international strategyoskarokupa
 
Winter views
Winter viewsWinter views
Winter viewschlud
 
Emplois du Temps du 2ème semestre 2016-2017
Emplois du Temps du 2ème semestre 2016-2017Emplois du Temps du 2ème semestre 2016-2017
Emplois du Temps du 2ème semestre 2016-2017Mohamed Larbi BEN YOUNES
 
presentation_adverts
presentation_advertspresentation_adverts
presentation_advertsjordi
 

Viewers also liked (20)

Lvw Model
Lvw ModelLvw Model
Lvw Model
 
M Learning Presentation
M Learning PresentationM Learning Presentation
M Learning Presentation
 
Digital Marketing e Mobile Marketing
Digital Marketing e Mobile MarketingDigital Marketing e Mobile Marketing
Digital Marketing e Mobile Marketing
 
обезлесяването в българия
обезлесяването в българияобезлесяването в българия
обезлесяването в българия
 
Oreilly Preso Final
Oreilly Preso FinalOreilly Preso Final
Oreilly Preso Final
 
Virussen Pp De Goeie
Virussen Pp De GoeieVirussen Pp De Goeie
Virussen Pp De Goeie
 
Pavilion N Bbrochure
Pavilion N BbrochurePavilion N Bbrochure
Pavilion N Bbrochure
 
Radina the school
Radina the schoolRadina the school
Radina the school
 
Final Arse Talk
Final Arse TalkFinal Arse Talk
Final Arse Talk
 
ITALIAN STUDENTS PRESENTED
ITALIAN STUDENTS PRESENTEDITALIAN STUDENTS PRESENTED
ITALIAN STUDENTS PRESENTED
 
Pijamas Gutty
Pijamas GuttyPijamas Gutty
Pijamas Gutty
 
What Is Social Media
What Is Social MediaWhat Is Social Media
What Is Social Media
 
Tiny Frogs
Tiny FrogsTiny Frogs
Tiny Frogs
 
QR codes, text a librarian and more...
QR codes, text a librarian and more...QR codes, text a librarian and more...
QR codes, text a librarian and more...
 
Digital Tv In Cee (2012)
Digital Tv In Cee (2012)Digital Tv In Cee (2012)
Digital Tv In Cee (2012)
 
Twitter an international strategy
Twitter   an international strategyTwitter   an international strategy
Twitter an international strategy
 
Rp interactive about_us 2.0
Rp interactive about_us 2.0Rp interactive about_us 2.0
Rp interactive about_us 2.0
 
Winter views
Winter viewsWinter views
Winter views
 
Emplois du Temps du 2ème semestre 2016-2017
Emplois du Temps du 2ème semestre 2016-2017Emplois du Temps du 2ème semestre 2016-2017
Emplois du Temps du 2ème semestre 2016-2017
 
presentation_adverts
presentation_advertspresentation_adverts
presentation_adverts
 

Similar to Implementing a JSR-283 Content Repository in PHP

Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPKarsten Dambekalns
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPKarsten Dambekalns
 
A Content Repository for TYPO3 5.0
A Content Repository for TYPO3 5.0A Content Repository for TYPO3 5.0
A Content Repository for TYPO3 5.0Karsten Dambekalns
 
Building cloud-enabled genomics workflows with Luigi and Docker
Building cloud-enabled genomics workflows with Luigi and DockerBuilding cloud-enabled genomics workflows with Luigi and Docker
Building cloud-enabled genomics workflows with Luigi and DockerJacob Feala
 
CHX PYTHON INTRO
CHX PYTHON INTROCHX PYTHON INTRO
CHX PYTHON INTROKai Liu
 
Building and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowBuilding and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowKaxil Naik
 
Assignment%2001%2022MTPFE006%20Sonali%20Singh..pptx
Assignment%2001%2022MTPFE006%20Sonali%20Singh..pptxAssignment%2001%2022MTPFE006%20Sonali%20Singh..pptx
Assignment%2001%2022MTPFE006%20Sonali%20Singh..pptxSonaliSingh788257
 
AI and Spark - IBM Community AI Day
AI and Spark - IBM Community AI DayAI and Spark - IBM Community AI Day
AI and Spark - IBM Community AI DayNick Pentreath
 
High Performance Enterprise Data Processing with Apache Spark with Sandeep Va...
High Performance Enterprise Data Processing with Apache Spark with Sandeep Va...High Performance Enterprise Data Processing with Apache Spark with Sandeep Va...
High Performance Enterprise Data Processing with Apache Spark with Sandeep Va...Spark Summit
 
Petapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated SystemsPetapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated Systemsdairsie
 
ACM TechTalks : Apache Arrow and the Future of Data Frames
ACM TechTalks : Apache Arrow and the Future of Data FramesACM TechTalks : Apache Arrow and the Future of Data Frames
ACM TechTalks : Apache Arrow and the Future of Data FramesWes McKinney
 
Introduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OSIntroduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OSSteve Wong
 
Java dev mar_2021_keynote
Java dev mar_2021_keynoteJava dev mar_2021_keynote
Java dev mar_2021_keynoteSuyash Joshi
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Henry S
 
Large Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and FriendsLarge Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and Friendslucenerevolution
 
Large Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and FriendsLarge Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and FriendsJulien Nioche
 
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...avanttic Consultoría Tecnológica
 
Better integrations through open interfaces
Better integrations through open interfacesBetter integrations through open interfaces
Better integrations through open interfacesSteve Speicher
 
Java Library for High Speed Streaming Data
Java Library for High Speed Streaming Data Java Library for High Speed Streaming Data
Java Library for High Speed Streaming Data Oracle Developers
 

Similar to Implementing a JSR-283 Content Repository in PHP (20)

Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHP
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHP
 
A Content Repository for TYPO3 5.0
A Content Repository for TYPO3 5.0A Content Repository for TYPO3 5.0
A Content Repository for TYPO3 5.0
 
Building cloud-enabled genomics workflows with Luigi and Docker
Building cloud-enabled genomics workflows with Luigi and DockerBuilding cloud-enabled genomics workflows with Luigi and Docker
Building cloud-enabled genomics workflows with Luigi and Docker
 
CHX PYTHON INTRO
CHX PYTHON INTROCHX PYTHON INTRO
CHX PYTHON INTRO
 
Building and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowBuilding and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache Airflow
 
AtoZ about TYPO3 v8 CMS
AtoZ about TYPO3 v8 CMSAtoZ about TYPO3 v8 CMS
AtoZ about TYPO3 v8 CMS
 
Assignment%2001%2022MTPFE006%20Sonali%20Singh..pptx
Assignment%2001%2022MTPFE006%20Sonali%20Singh..pptxAssignment%2001%2022MTPFE006%20Sonali%20Singh..pptx
Assignment%2001%2022MTPFE006%20Sonali%20Singh..pptx
 
AI and Spark - IBM Community AI Day
AI and Spark - IBM Community AI DayAI and Spark - IBM Community AI Day
AI and Spark - IBM Community AI Day
 
High Performance Enterprise Data Processing with Apache Spark with Sandeep Va...
High Performance Enterprise Data Processing with Apache Spark with Sandeep Va...High Performance Enterprise Data Processing with Apache Spark with Sandeep Va...
High Performance Enterprise Data Processing with Apache Spark with Sandeep Va...
 
Petapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated SystemsPetapath HP Cast 12 - Programming for High Performance Accelerated Systems
Petapath HP Cast 12 - Programming for High Performance Accelerated Systems
 
ACM TechTalks : Apache Arrow and the Future of Data Frames
ACM TechTalks : Apache Arrow and the Future of Data FramesACM TechTalks : Apache Arrow and the Future of Data Frames
ACM TechTalks : Apache Arrow and the Future of Data Frames
 
Introduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OSIntroduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OS
 
Java dev mar_2021_keynote
Java dev mar_2021_keynoteJava dev mar_2021_keynote
Java dev mar_2021_keynote
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
 
Large Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and FriendsLarge Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and Friends
 
Large Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and FriendsLarge Scale Crawling with Apache Nutch and Friends
Large Scale Crawling with Apache Nutch and Friends
 
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
 
Better integrations through open interfaces
Better integrations through open interfacesBetter integrations through open interfaces
Better integrations through open interfaces
 
Java Library for High Speed Streaming Data
Java Library for High Speed Streaming Data Java Library for High Speed Streaming Data
Java Library for High Speed Streaming Data
 

More from Karsten Dambekalns

The Perfect Neos Project Setup
The Perfect Neos Project SetupThe Perfect Neos Project Setup
The Perfect Neos Project SetupKarsten Dambekalns
 
Sawubona! Content Dimensions with Neos
Sawubona! Content Dimensions with NeosSawubona! Content Dimensions with Neos
Sawubona! Content Dimensions with NeosKarsten Dambekalns
 
Deploying TYPO3 Neos websites using Surf
Deploying TYPO3 Neos websites using SurfDeploying TYPO3 Neos websites using Surf
Deploying TYPO3 Neos websites using SurfKarsten Dambekalns
 
Profiling TYPO3 Flow Applications
Profiling TYPO3 Flow ApplicationsProfiling TYPO3 Flow Applications
Profiling TYPO3 Flow ApplicationsKarsten Dambekalns
 
Using Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 FlowUsing Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 FlowKarsten Dambekalns
 
How Git and Gerrit make you more productive
How Git and Gerrit make you more productiveHow Git and Gerrit make you more productive
How Git and Gerrit make you more productiveKarsten Dambekalns
 
The agile future of a ponderous project
The agile future of a ponderous projectThe agile future of a ponderous project
The agile future of a ponderous projectKarsten Dambekalns
 
How Domain-Driven Design helps you to migrate into the future
How Domain-Driven Design helps you to migrate into the futureHow Domain-Driven Design helps you to migrate into the future
How Domain-Driven Design helps you to migrate into the futureKarsten Dambekalns
 
Content Repository, Versioning and Workspaces in TYPO3 Phoenix
Content Repository, Versioning and Workspaces in TYPO3 PhoenixContent Repository, Versioning and Workspaces in TYPO3 Phoenix
Content Repository, Versioning and Workspaces in TYPO3 PhoenixKarsten Dambekalns
 
Transparent Object Persistence (within FLOW3)
Transparent Object Persistence (within FLOW3)Transparent Object Persistence (within FLOW3)
Transparent Object Persistence (within FLOW3)Karsten Dambekalns
 
Transparent Object Persistence with FLOW3
Transparent Object Persistence with FLOW3Transparent Object Persistence with FLOW3
Transparent Object Persistence with FLOW3Karsten Dambekalns
 
Knowledge Management in der TYPO3 Community
Knowledge Management in der TYPO3 CommunityKnowledge Management in der TYPO3 Community
Knowledge Management in der TYPO3 CommunityKarsten Dambekalns
 
Introduction to Source Code Management
Introduction to Source Code ManagementIntroduction to Source Code Management
Introduction to Source Code ManagementKarsten Dambekalns
 
DB API Usage - How to write DBAL compliant code
DB API Usage - How to write DBAL compliant codeDB API Usage - How to write DBAL compliant code
DB API Usage - How to write DBAL compliant codeKarsten Dambekalns
 

More from Karsten Dambekalns (20)

The Perfect Neos Project Setup
The Perfect Neos Project SetupThe Perfect Neos Project Setup
The Perfect Neos Project Setup
 
Sawubona! Content Dimensions with Neos
Sawubona! Content Dimensions with NeosSawubona! Content Dimensions with Neos
Sawubona! Content Dimensions with Neos
 
Deploying TYPO3 Neos websites using Surf
Deploying TYPO3 Neos websites using SurfDeploying TYPO3 Neos websites using Surf
Deploying TYPO3 Neos websites using Surf
 
Profiling TYPO3 Flow Applications
Profiling TYPO3 Flow ApplicationsProfiling TYPO3 Flow Applications
Profiling TYPO3 Flow Applications
 
Using Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 FlowUsing Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 Flow
 
i18n and L10n in TYPO3 Flow
i18n and L10n in TYPO3 Flowi18n and L10n in TYPO3 Flow
i18n and L10n in TYPO3 Flow
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
Doctrine in FLOW3
Doctrine in FLOW3Doctrine in FLOW3
Doctrine in FLOW3
 
How Git and Gerrit make you more productive
How Git and Gerrit make you more productiveHow Git and Gerrit make you more productive
How Git and Gerrit make you more productive
 
The agile future of a ponderous project
The agile future of a ponderous projectThe agile future of a ponderous project
The agile future of a ponderous project
 
How Domain-Driven Design helps you to migrate into the future
How Domain-Driven Design helps you to migrate into the futureHow Domain-Driven Design helps you to migrate into the future
How Domain-Driven Design helps you to migrate into the future
 
Content Repository, Versioning and Workspaces in TYPO3 Phoenix
Content Repository, Versioning and Workspaces in TYPO3 PhoenixContent Repository, Versioning and Workspaces in TYPO3 Phoenix
Content Repository, Versioning and Workspaces in TYPO3 Phoenix
 
Transparent Object Persistence (within FLOW3)
Transparent Object Persistence (within FLOW3)Transparent Object Persistence (within FLOW3)
Transparent Object Persistence (within FLOW3)
 
JavaScript for PHP Developers
JavaScript for PHP DevelopersJavaScript for PHP Developers
JavaScript for PHP Developers
 
Transparent Object Persistence with FLOW3
Transparent Object Persistence with FLOW3Transparent Object Persistence with FLOW3
Transparent Object Persistence with FLOW3
 
TDD (with FLOW3)
TDD (with FLOW3)TDD (with FLOW3)
TDD (with FLOW3)
 
Knowledge Management in der TYPO3 Community
Knowledge Management in der TYPO3 CommunityKnowledge Management in der TYPO3 Community
Knowledge Management in der TYPO3 Community
 
Unicode & PHP6
Unicode & PHP6Unicode & PHP6
Unicode & PHP6
 
Introduction to Source Code Management
Introduction to Source Code ManagementIntroduction to Source Code Management
Introduction to Source Code Management
 
DB API Usage - How to write DBAL compliant code
DB API Usage - How to write DBAL compliant codeDB API Usage - How to write DBAL compliant code
DB API Usage - How to write DBAL compliant code
 

Recently uploaded

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Implementing a JSR-283 Content Repository in PHP

  • 1. Implementing a JSR-283 Content Repository in PHP Karsten Dambekalns karsten@typo3.org Inspiring people to share
  • 2. Introduction to JCR Inspiring people to share
  • 3. What is a Content Repository A Content Repository (CR) allows the storage and retrieval of arbitrary content as nodes and properties in a tree structure The node types as well as the tree structure can be freely defined by the user of the CR Binary content can stored and queried as effectively as textual content The API for using a CR is standardized in the JR-170 and JSR-283 specifications The API abstracts the actual data storage used (RDBMS, ODBMS, files, ...) Inspiring people to share
  • 4. Nodes and Properties Inspiring people to share
  • 5. Existing implementations Jackrabbit is the reference implementation, available as open source from the Apache Foundation Day CRX is the commercial CR implementation from the quot;inventorquot; of JSR-170, Day Software Other implementations are eXo JCR and Jeceira, the latter also being dead, and others JSR-170 connectors exist Alfresco, BEA Portal Server, IBM Domino and others Inspiring people to share
  • 6. PHP ports of the JSR-170 API Travis Swicegood ported the API to PHP in 2005 - project seems dead There is a port of the API available in the Jackrabbit sources, added 2005 - no relevant changes since then No JSR-283 port of the API today Inspiring people to share
  • 7. Summary A Content Repository (CR) promises to solve a lot of the problems vendors of CMS currently have A stable standard with a fresh version in the making Various implementations exist, mostly in Java No PHP implementation of a CR exists Inspiring people to share
  • 8. Introduction to TYPO3 5.0 Inspiring people to share
  • 9. TYPO3 5.0 Projects During the first year of the TYPO3 5.0 project it became clear that we'd do more than quot;just write a new CMSquot; We started with some groundwork, resulting in the TYPO3 Framework We want to use a CR for the new version, so we need to write the TYPO3 Content Repository And of course we still have the ultimate goal to come up with a new TYPO3 CMS Inspiring people to share
  • 10. TYPO3 Framework Provides a robust and advanced programming framework with features like Dependency Injection, Aspect Oriented Programming, MVC, Component and Package Management, enhanced Reflection and more Inspired by the most popular frameworks and toolkits from Smalltalk, Python, Ruby and Java available today, picking the best concepts, skipping the annoyances Has already come a long way, check out the session by Robert Lemke tomorrow, 11:15! Not tied to TYPO3 CMS, can be used for any PHP6-based project Inspiring people to share
  • 11. TYPO3 CMS Successor to TYPO3 4.x., which is the result of 10 years of development Start from scratch, but keep the soul of TYPO3 Should provide lower complexity, a better data model, make use of PHP6 features, be more extensible, ... Inspiring people to share
  • 12. TYPO3 Content Repository Goal is a pure PHP implementation of JSR-283, but functionality needed for TYPO3 CMS has priority Will take advantage of the TYPO3 Framework, but not be tied to the TYPO3 CMS. Could eventually become the standard CR for the PHP community?! Inspiring people to share
  • 13. Summary TYPO3 5.0 will be a major upgrade to TYPO3 - on all fronts The TYPO3 Framework serves as a solid base for development Inspiring people to share
  • 14. TYPO3 Content Repository Inspiring people to share
  • 15. Development model Test-driven development with continuous integration Based on TYPO3 Framework Inspiring people to share
  • 16. Porting the JSR-283 API Facing typing issues, some Java types simply do not exist in PHP Binary data will probably be Resource Manager handles instead of streams Interfaces will not be ported up-front, but as we need them Features prioritized according to the needs of the TYPO3 CMS project Inspiring people to share
  • 17. Actual data storage The underlying storage of the TYPO3CR will be a RDBMS Currently only SQLite through PDO is used Easy to use for development and unit testing The use of PDO already enables any PDO-supported database Specialized DB connectors will follow, using optimized queries, stored procedures, ... Inspiring people to share
  • 18. Data storage techniques Basically we need to store a simple tree Read access must be fast, write access should be fast, as the majority of requests are read requests Traditional approach as used in TYPO3 today is to store a triplet (uid,pid,sorting) Alternative & faster method: Pre/Post Plane Encoding Inspiring people to share
  • 19. Pre/Post Plane Encoding Stores number determined by pre-order and post-order tree traversal Allows to partition the nodes into four regions, as shown for node ƒ Inspiring people to share
  • 20. Pre/Post Plane Encoding Very fast read access, e.g. a single SELECT to query all ancestors to a node ƒ SELECT * FROM table WHERE pre < ƒ.pre AND post > ƒ.post Write access can be sped up by various approaches like spacing and variable length indices for the pre/post numbers or by partitioning the data over more tables Inspiring people to share
  • 21. Querying the TYPO3 CR Using getRootNode() and friends from the API Using XPath queries Using SQL queries Inspiring people to share
  • 22. XPath support for TYPO3R To enable XPath we need • a XPath parser • an efficient way to transform a XPath query into SQL for the used low-level data structure The latter is a lot easier when storing the tree pre/post plane encoded Inspiring people to share
  • 23. SQL support for TYPO3R Using SQL we need • a (simple) SQL parser • an efficient way to transform that SQL into equivalent SQL for the used low-level data structure This still needs to be investigated, possible approaches include storing a reference to the parent node or even using the pre/post plane only as a cache for XPath read queries, optimizing the native storage for SQL read queries Inspiring people to share
  • 24. Extensions to JSR-283 A vendor may choose to offer additional features in his CR implementation The TYPO3CR will offer support for • Data persistency through code annotations • Automatic node type generation based on class members • Rules for setting up virtual root nodes based on node types Inspiring people to share
  • 25. Current status Currently the code supports a subset of the required features of levels 1 & 2 and the optional parts of the JSR-283 specification • Basic read & write access • Namespace registration • Node type discovery and registration Data storage uses the naive approach known from TYPO3 4.x Have a look at http://5-0.dev.typo3.org/trac/TYPO3/wiki/TYPO3CR and the Subversion repository for up-to-date information Inspiring people to share
  • 26. Future plans Implementing missing required and optional features according to the JSR-283 specification • Workspaces and versioning will require special attention, as they are key features for the CMS as well! Implement native RDBMS connectors making use of specifically tuned queries and product-specific features Performance tests and tuning as needed Inspiring people to share
  • 27. Summary Implementing the specification is not an easy task, but doable For the various parts a lot of research has already been done in the past The repository is a major improvement over the current way of storing data The whole PHP community could^Wwill benefit! Inspiring people to share