22
A content repository for your PHP application or CMS? August 20, 2011 Sankt Augustin Paul Borgermans & Henri Bergius

A content repository for your PHP application or CMS?

Embed Size (px)

DESCRIPTION

The idea for using content repositories (CR) instead of relying on lower level database frameworks is gaining steam with several new kids on block, typically relying on NoSQL data stores. This talk will give an overview of the current state of the art amid several use cases (including ease of use, performance and flexibility) and architectures. CR such as Midgard, Lily, and architectures based on HBase, CouchDB, MongoDB (NoSQL stores) incombination with Information retrieval layers will be highlighted, as well is components or libraries to be used from the PHP side. A second part treats the emgerging standard PHPCR, a standard API based on JCR (JSR-283) See: http://www.slideshare.net/bergie/phpcr-standard-content-repository-for-php

Citation preview

Page 1: A content repository for your PHP application or CMS?

A content repository for your PHP application or CMS?

August 20, 2011 Sankt Augustin

Paul Borgermans & Henri Bergius

Page 2: A content repository for your PHP application or CMS?

About me● Active in open source / PHP community for a while

– PHP based CMS solutions (mostly eZ Publish)

– board member

● Fancying :

– Apache family of projects (mainly Solr)

– NoSQL (Not only SQL) and scalable architectures

– eZ Publish & CMS systems in general

– Semantic aspects

● Contact

[email protected]

@paulborgermans

Page 3: A content repository for your PHP application or CMS?

The Pitch

In many cases of web based applications, a content repository is a better alternative for managing and serving content

(as opposed to the lower level SQL stores)

Page 4: A content repository for your PHP application or CMS?

Architecture

Traditional integrated approach

Content Management System

Web Application

Database

Decoupled approach

Abstraction?

Framework

CR CR

Page 5: A content repository for your PHP application or CMS?

OK, but what is a content repository?

Page 6: A content repository for your PHP application or CMS?

A content repository is a provider of ...

● Storage– Flexibility in content modeling

– Durability

– Scalability / Performance

● Services– Read/Write of content, versioning

– Access control

– Information retrieval

– (Analytics)

– (Semantics)

Page 7: A content repository for your PHP application or CMS?

Flexibility

● You want it to swallow anything● The less data design implications, the better● Run-time, scriptable schema's

● Let it map to your data-model effortlessly– Mixing structured and un-structered data/blobs

● From SQL to Object/Document oriented access– Much more natural for most application domains

Page 8: A content repository for your PHP application or CMS?

Durability

● ACID, damn you!

Of course you want it to be safe.. But it might be a trade-off for performance

● Implicit / Explicit versioning (when desired)

Page 9: A content repository for your PHP application or CMS?

Performance / Scalability

● Maybe not always a concern

● But should not be your concern beyond checking that it is scalable!

Page 10: A content repository for your PHP application or CMS?

Services

● Versioning● Information retrieval

– Rich, complex queries/fetches

– Full-text search

– References / Relations

● Access control– Plug-in mechanisms desired

– Mapping of domain specific rules (to the CR)

● Analytics / Semantics– Plugins / Tools

Page 11: A content repository for your PHP application or CMS?

Challenges

● Standardisation in API's– Main API is very proper to

underlying systems

– CMIS

– PHPCR

● Mobile– Content optimisation

– Extra analytics (location, context)

– Off-line use

Page 12: A content repository for your PHP application or CMS?

A selection of possible engines to drive a CR(in NoSQL land)

Page 13: A content repository for your PHP application or CMS?

CouchDB

● Content modeling:Document oriented, schema free

● API: RESTful, (PHP wrapper @koredn)● Scalability: distributed, master-master● Robustness: ACID compliant● Built-in full text search: no● Extra

– Off-line use cases

– Map / Reduce

Page 14: A content repository for your PHP application or CMS?

MongoDB

● Content modeling:Document oriented, schema free

● API: binary protocol, PHP extension available● Scalability: Master-Slave, Sharding● Robustness: at a cost● Built-in full text search: no● Extra

– Updates in place for fields– Rich (ugly?) query syntax

Page 15: A content repository for your PHP application or CMS?

Hbase

● Content modeling: Google big table clone, column oriented

● API: Thrift, HTTP

● Scalability: excellent

● Robustness: Not entirely ACID, but still very good

● Built-in full text search: no

● Extra

– Built in versioning

– Swallows large blobs easily

Page 16: A content repository for your PHP application or CMS?

Apache Solr

● Not so much storage (but can be a caching storage layer too)

● Very rich and powerful Information Retrieval Engine

● API: HTTP, Java, several PHP wrappers

● Scalability: very good, and getting even better*

● Robustness

– SolrCloud* ● Extra: join-like queries*

* Solr 4.0

Page 17: A content repository for your PHP application or CMS?

Lily

http://www.lilyproject.org/

Page 18: A content repository for your PHP application or CMS?

Lily, “big data” content repository

● Provides a very rich feature set● RESTful, Java API● Building on

● Apache license

Page 19: A content repository for your PHP application or CMS?
Page 20: A content repository for your PHP application or CMS?
Page 21: A content repository for your PHP application or CMS?
Page 22: A content repository for your PHP application or CMS?

Over to Henri …

http://www.slideshare.net/bergie/phpcr-standard-content-repository-for-php