MuseoTorino, first italian project using a GraphDB, RDFa, Linked Open Data
11:40 Develop: Morgner - Graphdb for CMS
-
Upload
graphconnect -
Category
Documents
-
view
1.487 -
download
0
description
Transcript of 11:40 Develop: Morgner - Graphdb for CMS
![Page 1: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/1.jpg)
Ten Reasons WhyYou Should Use aGraph DatabaseFor Your CMS
GraphConnect, San Francisco, 6th Nov 2012Axel Morgner (@amorgner), founder of structr
![Page 2: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/2.jpg)
About me
- 10+ yrs Oracle & ECM- founded inxire (ECM based on Oracle)- left 2010 to start over from scratch- met Peter Neubauer in Frankfurt- started structr
![Page 3: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/3.jpg)
About structr- started as CMS/CMF- open sourced 31 May 2011- today: 0.6 about to be released
structr Server structr Ui
![Page 4: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/4.jpg)
More info about structr
Website:http://structr.org
Source Code:https://github.com/structr/structr
Forum/Mailing List:https://groups.google.com/forum/#!forum/structr
Twitter:@structr
![Page 5: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/5.jpg)
Ten Reasons ...
![Page 6: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/6.jpg)
#1Graph Databaseswere made for
Content Management
![Page 7: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/7.jpg)
Content Management
![Page 8: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/8.jpg)
Content Management
Pages
Sites HTML Elements
![Page 9: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/9.jpg)
Content Management
PicturesFiles
Pages
Sites HTML Elements
Texts
![Page 10: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/10.jpg)
Content Management
Pictures
Videos
Sounds
Files
Folders
Users
Pages
Sites HTML Elements
Texts
![Page 11: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/11.jpg)
Content Management
Pictures
Videos
Sounds
Files
Folders
Categories
Taxonomies
Terms
Users
GroupsRoles
Pages
Sites HTML Elements
Texts
![Page 12: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/12.jpg)
Content Management
Pictures
Videos
Sounds
Files
Folders
Categories
Taxonomies
Terms
Users
GroupsRoles
Pages
Sites HTML Elements
Texts
![Page 13: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/13.jpg)
Content Management
Pictures
Videos
Sounds
Files
Folders
Categories
Taxonomies
Terms
Users
GroupsRoles
Pages
Sites HTML Elements
Texts
CONTAINS
CONTAINS
CONTAINSACTS_IN
CONTAINS
LINK
LINK
CONTAINS
TAG
TAG
CONTAINS
IS_A
LINK
LINK CONTAINS
![Page 14: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/14.jpg)
Neo4j wasinitially made for
Content Management
![Page 15: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/15.jpg)
Q: What were the main reasons for you to create Neo4j?
A: We quickly saw that a part of the system was very "networky", and the relational database did not handle many-to-many relationships very well, and not even one-to-many relationships.
We ended up doing joins, and performance was very, very bad. So that's when we started to try different data models than the relational model, and see if we could use that to solve our business problems.
![Page 16: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/16.jpg)
Q: All the CMS created at that time, in the early 2000s, were using an O/R mapping layer. So it was quite extra-ordinary that you did not go this way. What gave you the freedom to do that?A: We were young and naïve. :-) And we had a funding at that time, [...] so we decided to try it out. And here we are today.
Q: Permission resolution, was it a particular problem you were faced with?A: Oh yes, well, but we didn't see that at first. The actual problem we used as a starting point was the automatic translation between languages.
![Page 17: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/17.jpg)
#1Graph Databases1
were made forContent Management2
1 at least Neo4j2 not exclusively
![Page 18: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/18.jpg)
#2O/R Mapping
![Page 19: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/19.jpg)
Core Data
![Page 20: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/20.jpg)
Core Data
![Page 21: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/21.jpg)
#2No O/R Mapping
=Less Code
Less Runtime ObjectsLess Complexity
![Page 22: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/22.jpg)
#3Visualization
![Page 23: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/23.jpg)
#3Graph Visualization
=Understand how your
data is connected
![Page 24: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/24.jpg)
#4Schema
![Page 25: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/25.jpg)
Content Graph
Pictures
Videos
Sounds
Files
Folders
Categories
Taxonomies
Terms
Users
GroupsRoles
Pages
Sites HTML Elements
Texts
CONTAINS
CONTAINS
CONTAINSACTS_IN
CONTAINS
LINK
LINK
CONTAINS
TAG
TAG
CONTAINS
IS_A
LINK
LINK CONTAINS
![Page 26: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/26.jpg)
Domains as Sub Graphs
Pictures
Videos
Sounds
Files
Folders
Categories
Taxonomies
Terms
Users
GroupsRoles
Pages
Sites HTML Elements
Texts
CONTAINS
CONTAINS
CONTAINSACTS_IN
CONTAINS
LINK
LINK
CONTAINS
TAG
TAG
CONTAINS
IS_A
LINK
LINK CONTAINS
![Page 27: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/27.jpg)
#4No Fixed Schema
=Flexibility
Late Optimization
![Page 28: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/28.jpg)
#5Templates
![Page 29: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/29.jpg)
Page Rendering<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/>
<title>${content.title!}</title>
</head>
<body>
<h1>${content.title!}</h1>
</body>
Page Template
Database
Data Objects
![Page 30: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/30.jpg)
Page Rendering<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/>
<title>${content.title!}</title>
</head>
<body>
<h1>${content.title!}</h1>
</body>
Page Template
Database
Data Objects O/R Layer
![Page 31: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/31.jpg)
Page Rendering<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/>
<title>${content.title!}</title>
</head>
<body>
<h1>${content.title!}</h1>
</body>
Page Template
Database
Data ObjectsTemplateEngine O/R Layer
![Page 32: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/32.jpg)
Page Rendering<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/>
<title>${content.title!}</title>
</head>
<body>
<h1>${content.title!}</h1>
</body>
Page Template
Database
Data Objects O/R LayerTemplateEngine
WebServer
![Page 33: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/33.jpg)
Page Rendering<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/>
<title>${content.title!}</title>
</head>
<body>
<h1>${content.title!}</h1>
</body>
Page Template
Database
Data Objects O/R LayerTemplateEngine
WebServer
![Page 34: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/34.jpg)
Page Rendering<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/>
<title>${content.title!}</title>
</head>
<body>
<h1>${content.title!}</h1>
</body>
Page Template
Database
Data Objects O/R LayerTemplateEngine
WebServer
![Page 35: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/35.jpg)
Page Rendering<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/>
<title>${content.title!}</title>
</head>
<body>
<h1>${content.title!}</h1>
</body>
Page Template
Database
Data Objects O/R LayerTemplateEngine
WebServer
![Page 36: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/36.jpg)
Page Rendering<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8"/>
<title>${content.title!}</title>
</head>
<body>
<h1>${content.title!}</h1>
</body>
Page Template
Database
Data Objects O/R LayerTemplateEngine
WebServer
![Page 37: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/37.jpg)
Page Rendering
RenderingEngine
WebServer
![Page 38: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/38.jpg)
Page Rendering
Database:Content Graph
Data Objects:Content Graph
RenderingEngine
WebServer
![Page 39: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/39.jpg)
#5No (classic) Templates
=Reduced Complexity
Less Caching
![Page 40: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/40.jpg)
#6Caching
![Page 41: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/41.jpg)
Caching Benchmark
0
12,5
25
37,5
50
req/s (w/o caching) 0
46
109
Wordpress 3.4.2 Drupal 7.16 structr 0.6 Apache
0
1000
2000
3000
4000
req/s (w/ caching)
3500
13191244
320
![Page 42: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/42.jpg)
#6Less Caching
=Less Cache Sync./Invalid.
Less Cache Objects
![Page 43: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/43.jpg)
#7Permission Resolution
![Page 44: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/44.jpg)
ACLs
http://blog.neo4j.org/2010/02/access-control-lists-graph-database-way.html
![Page 45: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/45.jpg)
ACLs
![Page 46: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/46.jpg)
ACLs
![Page 47: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/47.jpg)
ACLs
![Page 48: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/48.jpg)
ACLs
![Page 49: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/49.jpg)
#7Real-time ACL
Resolution=
Fast Access toProtected Content
![Page 50: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/50.jpg)
#8Memory Footprint
![Page 51: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/51.jpg)
#9Dependencies
![Page 52: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/52.jpg)
#10Complex Features
![Page 53: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/53.jpg)
Example: Versioning
Folder A
Document X
CONTAINS
Folder B
Document X
CONTAINS
t0 t1
![Page 54: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/54.jpg)
Example: Versioning
Folder A
CONTAINS
Document X
![Page 55: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/55.jpg)
Example: Versioning
Folder B
Document X
CONTAINS
![Page 56: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/56.jpg)
Example: Versioning
Folder A
CONTAINS
Folder B
Document X
CONTAINS
valid_until: t1 valid_from: t1
![Page 57: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/57.jpg)
Example: Versioning
Folder A
CONTAINS
Folder B
Document X
CONTAINS
valid_until: t1 valid_from: t1
User 1
SECURITYread: true
write: falsevalid_from: t2
SECURITYread: truewrite: true
valid_until: t2
![Page 58: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/58.jpg)
Example: Versioning
Folder A
CONTAINS
Folder B
Document X
User 1
SECURITYread: truewrite: true
valid_until: t2
t0
![Page 59: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/59.jpg)
Example: Versioning
Folder A Folder B
Document X
CONTAINS
User 1
SECURITYread: truewrite: true
t1
![Page 60: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/60.jpg)
Example: Versioning
Folder A Folder B
Document X
CONTAINS
User 1
SECURITYread: true
write: false
t2
![Page 61: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/61.jpg)
Conclusions
![Page 62: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/62.jpg)
ConclusionsNo O/R mappingLess cachingEasy visualization
Simplicity
![Page 63: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/63.jpg)
ConclusionsNo O/R mappingLess cachingEasy visualization
Real-time ACL resolutionSmaller memory footprintLess dependencies
Simplicity
Performance
![Page 64: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/64.jpg)
ConclusionsNo O/R mappingLess cachingEasy visualization
Real-time ACL resolutionSmaller memory footprintLess dependencies
Complex features are easierNo (classic) templatesNo fixed schema
Simplicity
Performance
Flexibility
![Page 65: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/65.jpg)
Graph Databaseswere made for
Content Management
![Page 66: 11:40 Develop: Morgner - Graphdb for CMS](https://reader034.fdocuments.in/reader034/viewer/2022051514/54813c54b4af9fb4158b5e9a/html5/thumbnails/66.jpg)
Thank you!