SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
APACHE SLING & FRIENDS TECH MEETUP
     BERLIN, 26-28 SEPTEMBER 2012




   A JCR view of the world
Alexander Klimetschek, Adobe

                                       1
JCR


                             CONTENT REPOSITORY

                    FEATURES OF AN                                        FEATURES OF A



                 RDBMS                                         FILESYSTEM
         Transactions, Query, Structure, Integrity          Binaries, Hierarchy, Locking, Access Control




                       +                             ALL THE OTHER



                                            GOOD STUFF
                                              YOU ALWAYS WANTED

                                     Data First, Versioning, Full-text,
                                     Multi-Value, Sort-Order, Observation




adaptTo() 2012                                                                                             2
David`s Model


         1. Data first, Structure Later
         2. Drive the Content Hierarchy
         3. Reduce # of Workspaces
         4. Beware of Same Name Siblings
         5. References Considered Harmful
         6. Files are Files are Files
         7. ID`s are evil

                 http://wiki.apache.org/jackrabbit/DavidsModel

adaptTo() 2012                                                   3
David`s Model


         1. Data first, Structure Later
         2. Drive the Content Hierarchy
         3. Reduce # of Workspaces
         4. Beware of Same Name Siblings
         5. References Considered Harmful
         6. Files are Files are Files
         7. ID`s are evil

                 http://wiki.apache.org/jackrabbit/DavidsModel

adaptTo() 2012                                                   4
#1 Data first, Structure later


          Strict schemas harm evolution
              Structure is expensive
              Constraints only where 100% future proof
          Easier to extract patterns from real data
              allow end users to structure their content
          Use nt:unstructured instead of my:Type
              CQ: use cq:Page
              Sling: use sling:Folder


adaptTo() 2012                                              5
Pages / Documents


 Outer hierarchy                  hierarchy

   files & folders
 Inner document structure
   micro tree
   separated by jcr:content
 nt:hierarchyNode
                                        document
   used for replication in CQ
 Pages: generic UIs & authoring
   /etc/replication

 adaptTo() 2012                                6
Shadow paths


          Need to store separate information?
          But not within original content?

          Use shadow paths:
           /some/path	
  =>	
  /alternate/some/path

          Samples:
              /content/usergenerated
              /var/clientlibs
              /var/audi/com.day.cq.wcm.core.page
adaptTo() 2012                                        7
#2 Drive the Content Hierarchy


          Content hierarchy is valuable
          Look at ownership & permissions
          Good design:
              intuitive, understandable & easily explorable
              uses less ACLs
              like a well-ordered and well-named filesystem
              always try to use hierarchy conventions instead
               of node types
              don`t simply „copy“ relational models

adaptTo() 2012                                                   8
Root


          Inspiration:
           Unix filesystem
              for CMS


          /content
          /apps over /libs


          mess: /etc

adaptTo() 2012                9
Access Control


          Structures driven by permissions
              /public
              /private
          By organizational structure
              /customers/lufthansa/systems/...	
  




adaptTo() 2012                                        10
#5 References considered harmful


          REFERENCEs imply referential integrity
          Two documents linked via a reference...
              cannot be imported/exported separately
              create larger transactional boundary
              UUID reference is not human readable
          WEAKREFERENCE	
  still relies on UUIDs
          Better use soft references
              STRING with node path
              code: handle missing target without failure
adaptTo() 2012                                               11
Tagging


 Lazy references
  Scalability
  Priviliges: tag librarian vs. content author
 Tags under /etc/tags
  taxonomy, titles, metadata etc.
 Tagged resources: cq:tags property
  array: [stockphotography:animals/birds]
  not automatically updated when tags change


 adaptTo() 2012                                   12
Flexible hierarchies


          Fixed structures below a base
          Referenced by path
          /home (~)
          /content/campaigns
          /libs/*/* (components)
          /etc/packages/day/product/550/...




adaptTo() 2012                                 13
Relative paths


          Overlays: /apps over /libs
          projects over product, custom over default
          Samples
              resource types: foundation/components/text
              tags: geometrixx:activity/biking
                  or: /etc/tags/geometrixx-­‐outdoors/activity/biking




adaptTo() 2012                                                           14
#6 Files are Files are Files


          Files and folder-like elements should use
           nt:file and nt:folder
          Built-in node types maximize re-use
              HTTP range download, WebDAV
          Allows mime-type and meta data
          If content needs binary data (eg. an image)
              add a sub-node of type nt:file
              for a list, add a sub-node of nt:folder


adaptTo() 2012                                           15
Images


 Embed in pages
 Assets have renditions
 Using nt:file




adaptTo() 2012             16
#7 ID's are evil


          IDs necessary in RDBMS for relations
              Not required in JCR at all, see #5
          Use a proper content hierarchy instead
              find node names for your content
              greatly enhances explorability
              /mails/38956 vs. /mails/2008/08/14/happy_birthday

          Naming
              title of the object
              hierarchy: categories, dates, letter-groups

adaptTo() 2012                                                     17
Date based structures


          If nothing works, dates work
              .../2012/09/26/...
          Samples
                Calendar
                Blog
                /var/statistics/queries
                ~/activities/foo/2012/09/12/...




adaptTo() 2012                                     18
APACHE SLING & FRIENDS TECH MEETUP
     BERLIN, 26-28 SEPTEMBER 2012




         Thank You!
Alexander Klimetschek, Adobe

                                       19

Mais conteúdo relacionado

Mais procurados

5050 dev nation
5050 dev nation5050 dev nation
5050 dev nation
Arun Gupta
 
Fifty Features of Java EE 7 in 50 Minutes
Fifty Features of Java EE 7 in 50 MinutesFifty Features of Java EE 7 in 50 Minutes
Fifty Features of Java EE 7 in 50 Minutes
glassfish
 
High Performance Django
High Performance DjangoHigh Performance Django
High Performance Django
DjangoCon2008
 

Mais procurados (20)

RESTful web service with JBoss Fuse
RESTful web service with JBoss FuseRESTful web service with JBoss Fuse
RESTful web service with JBoss Fuse
 
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
 
Spring - Part 2 - Autowiring, Annotations, Java based Configuration - slides
Spring - Part 2 - Autowiring, Annotations, Java based Configuration - slidesSpring - Part 2 - Autowiring, Annotations, Java based Configuration - slides
Spring - Part 2 - Autowiring, Annotations, Java based Configuration - slides
 
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
 
Jersey and JAX-RS
Jersey and JAX-RSJersey and JAX-RS
Jersey and JAX-RS
 
Configuration with Apache Tamaya
Configuration with Apache TamayaConfiguration with Apache Tamaya
Configuration with Apache Tamaya
 
Spring - Part 3 - AOP
Spring - Part 3 - AOPSpring - Part 3 - AOP
Spring - Part 3 - AOP
 
5050 dev nation
5050 dev nation5050 dev nation
5050 dev nation
 
Spring 4 final xtr_presentation
Spring 4 final xtr_presentationSpring 4 final xtr_presentation
Spring 4 final xtr_presentation
 
PyGrunn 2017 - Django Performance Unchained - slides
PyGrunn 2017 - Django Performance Unchained - slidesPyGrunn 2017 - Django Performance Unchained - slides
PyGrunn 2017 - Django Performance Unchained - slides
 
the Spring 4 update
the Spring 4 updatethe Spring 4 update
the Spring 4 update
 
55 New Features in Java 7
55 New Features in Java 755 New Features in Java 7
55 New Features in Java 7
 
Fifty Features of Java EE 7 in 50 Minutes
Fifty Features of Java EE 7 in 50 MinutesFifty Features of Java EE 7 in 50 Minutes
Fifty Features of Java EE 7 in 50 Minutes
 
Introduction To Web Beans
Introduction To Web BeansIntroduction To Web Beans
Introduction To Web Beans
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte Frühling
 
High Performance Django
High Performance DjangoHigh Performance Django
High Performance Django
 
Java Web Programming [2/9] : Servlet Basic
Java Web Programming [2/9] : Servlet BasicJava Web Programming [2/9] : Servlet Basic
Java Web Programming [2/9] : Servlet Basic
 
So various polymorphism in Scala
So various polymorphism in ScalaSo various polymorphism in Scala
So various polymorphism in Scala
 
10 jdbc
10 jdbc10 jdbc
10 jdbc
 
Jstl Guide
Jstl GuideJstl Guide
Jstl Guide
 

Destaque

Runmodes and Configs for Fun and Profit
Runmodes and Configs for Fun and ProfitRunmodes and Configs for Fun and Profit
Runmodes and Configs for Fun and Profit
Mike Pfaff
 
Performance Pack
Performance PackPerformance Pack
Performance Pack
day
 

Destaque (20)

Apache Felix Web Console
Apache Felix Web ConsoleApache Felix Web Console
Apache Felix Web Console
 
Runmodes and Configs for Fun and Profit
Runmodes and Configs for Fun and ProfitRunmodes and Configs for Fun and Profit
Runmodes and Configs for Fun and Profit
 
Declarative Services Dependency Injection OSGi style
Declarative Services Dependency Injection OSGi styleDeclarative Services Dependency Injection OSGi style
Declarative Services Dependency Injection OSGi style
 
Embrace OSGi
Embrace OSGiEmbrace OSGi
Embrace OSGi
 
Runmodes and Configs for Fun and Profit
Runmodes and Configs for Fun and ProfitRunmodes and Configs for Fun and Profit
Runmodes and Configs for Fun and Profit
 
SCR Annotations for Fun and Profit
SCR Annotations for Fun and ProfitSCR Annotations for Fun and Profit
SCR Annotations for Fun and Profit
 
What's cool in the new and updated OSGi Specs
What's cool in the new and updated OSGi SpecsWhat's cool in the new and updated OSGi Specs
What's cool in the new and updated OSGi Specs
 
Monitoring OSGi Applications with the Web Console
Monitoring OSGi Applications with the Web ConsoleMonitoring OSGi Applications with the Web Console
Monitoring OSGi Applications with the Web Console
 
Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)
Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)
Apache Sling - Distributed Eventing, Discovery, and Jobs (adaptTo 2013)
 
Adobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job ProcessingAdobe AEM - From Eventing to Job Processing
Adobe AEM - From Eventing to Job Processing
 
Use Case: Building OSGi Enterprise Applications (QCon 14)
Use Case: Building OSGi Enterprise Applications (QCon 14)Use Case: Building OSGi Enterprise Applications (QCon 14)
Use Case: Building OSGi Enterprise Applications (QCon 14)
 
Service oriented web development with OSGi
Service oriented web development with OSGiService oriented web development with OSGi
Service oriented web development with OSGi
 
Distributed Eventing in OSGi
Distributed Eventing in OSGiDistributed Eventing in OSGi
Distributed Eventing in OSGi
 
Marketing to the Mobile Elite
Marketing to the Mobile EliteMarketing to the Mobile Elite
Marketing to the Mobile Elite
 
Performance Pack
Performance PackPerformance Pack
Performance Pack
 
Top X OAuth 2 Hacks
Top X OAuth 2 HacksTop X OAuth 2 Hacks
Top X OAuth 2 Hacks
 
Interoperability at Apache Software Foundation
Interoperability at Apache Software FoundationInteroperability at Apache Software Foundation
Interoperability at Apache Software Foundation
 
ace 2017x
ace 2017xace 2017x
ace 2017x
 
Java standards in WCM
Java standards in WCMJava standards in WCM
Java standards in WCM
 
The Future of ECM
The Future of ECMThe Future of ECM
The Future of ECM
 

Semelhante a A JCR View of the World - adaptTo() 2012 Berlin

Understanding Dom
Understanding DomUnderstanding Dom
Understanding Dom
LiquidHub
 
Database management-system
Database management-systemDatabase management-system
Database management-system
kalasalingam
 

Semelhante a A JCR View of the World - adaptTo() 2012 Berlin (20)

CLARIN CMDI support in Dataverse
CLARIN CMDI support in Dataverse CLARIN CMDI support in Dataverse
CLARIN CMDI support in Dataverse
 
Administration for Oracle ADF Applications
Administration for Oracle ADF ApplicationsAdministration for Oracle ADF Applications
Administration for Oracle ADF Applications
 
Administration von ADF Anwendungen
Administration von ADF AnwendungenAdministration von ADF Anwendungen
Administration von ADF Anwendungen
 
Entity Framework
Entity FrameworkEntity Framework
Entity Framework
 
Metadata lecture 5 part 2
Metadata lecture 5 part 2Metadata lecture 5 part 2
Metadata lecture 5 part 2
 
Database Management System-session1-2
Database Management System-session1-2Database Management System-session1-2
Database Management System-session1-2
 
Preparing yourdataforcloud
Preparing yourdataforcloudPreparing yourdataforcloud
Preparing yourdataforcloud
 
Understanding Dom
Understanding DomUnderstanding Dom
Understanding Dom
 
Diffrence between dbms and rdbms
Diffrence between dbms and rdbmsDiffrence between dbms and rdbms
Diffrence between dbms and rdbms
 
CLARIN CMDI use case and flexible metadata schemes
CLARIN CMDI use case and flexible metadata schemes CLARIN CMDI use case and flexible metadata schemes
CLARIN CMDI use case and flexible metadata schemes
 
MongoDB
MongoDBMongoDB
MongoDB
 
MongoDB as Search Engine Repository @ MongoTokyo2011
MongoDB as Search Engine Repository @ MongoTokyo2011MongoDB as Search Engine Repository @ MongoTokyo2011
MongoDB as Search Engine Repository @ MongoTokyo2011
 
SQL? NoSQL? NewSQL?!? What’s a Java developer to do? - JDC2012 Cairo, Egypt
SQL? NoSQL? NewSQL?!? What’s a Java developer to do? - JDC2012 Cairo, EgyptSQL? NoSQL? NewSQL?!? What’s a Java developer to do? - JDC2012 Cairo, Egypt
SQL? NoSQL? NewSQL?!? What’s a Java developer to do? - JDC2012 Cairo, Egypt
 
CLARIAH CMDI use case and flexible metadata schemes
CLARIAH CMDI use case and flexible metadata schemesCLARIAH CMDI use case and flexible metadata schemes
CLARIAH CMDI use case and flexible metadata schemes
 
A Study on Mongodb Database.pdf
A Study on Mongodb Database.pdfA Study on Mongodb Database.pdf
A Study on Mongodb Database.pdf
 
A Study on Mongodb Database
A Study on Mongodb DatabaseA Study on Mongodb Database
A Study on Mongodb Database
 
Database management-system
Database management-systemDatabase management-system
Database management-system
 
Prepare Your Data For The Cloud
Prepare Your Data For The CloudPrepare Your Data For The Cloud
Prepare Your Data For The Cloud
 
Preparing your data for the cloud
Preparing your data for the cloudPreparing your data for the cloud
Preparing your data for the cloud
 
Techorama - Evolvable Application Development with MongoDB
Techorama  - Evolvable Application Development with MongoDBTechorama  - Evolvable Application Development with MongoDB
Techorama - Evolvable Application Development with MongoDB
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

A JCR View of the World - adaptTo() 2012 Berlin

  • 1. APACHE SLING & FRIENDS TECH MEETUP BERLIN, 26-28 SEPTEMBER 2012 A JCR view of the world Alexander Klimetschek, Adobe 1
  • 2. JCR CONTENT REPOSITORY FEATURES OF AN FEATURES OF A RDBMS FILESYSTEM Transactions, Query, Structure, Integrity Binaries, Hierarchy, Locking, Access Control + ALL THE OTHER GOOD STUFF YOU ALWAYS WANTED Data First, Versioning, Full-text, Multi-Value, Sort-Order, Observation adaptTo() 2012 2
  • 3. David`s Model 1. Data first, Structure Later 2. Drive the Content Hierarchy 3. Reduce # of Workspaces 4. Beware of Same Name Siblings 5. References Considered Harmful 6. Files are Files are Files 7. ID`s are evil http://wiki.apache.org/jackrabbit/DavidsModel adaptTo() 2012 3
  • 4. David`s Model 1. Data first, Structure Later 2. Drive the Content Hierarchy 3. Reduce # of Workspaces 4. Beware of Same Name Siblings 5. References Considered Harmful 6. Files are Files are Files 7. ID`s are evil http://wiki.apache.org/jackrabbit/DavidsModel adaptTo() 2012 4
  • 5. #1 Data first, Structure later  Strict schemas harm evolution  Structure is expensive  Constraints only where 100% future proof  Easier to extract patterns from real data  allow end users to structure their content  Use nt:unstructured instead of my:Type  CQ: use cq:Page  Sling: use sling:Folder adaptTo() 2012 5
  • 6. Pages / Documents  Outer hierarchy hierarchy  files & folders  Inner document structure  micro tree  separated by jcr:content  nt:hierarchyNode document  used for replication in CQ  Pages: generic UIs & authoring  /etc/replication adaptTo() 2012 6
  • 7. Shadow paths  Need to store separate information?  But not within original content?  Use shadow paths: /some/path  =>  /alternate/some/path  Samples:  /content/usergenerated  /var/clientlibs  /var/audi/com.day.cq.wcm.core.page adaptTo() 2012 7
  • 8. #2 Drive the Content Hierarchy  Content hierarchy is valuable  Look at ownership & permissions  Good design:  intuitive, understandable & easily explorable  uses less ACLs  like a well-ordered and well-named filesystem  always try to use hierarchy conventions instead of node types  don`t simply „copy“ relational models adaptTo() 2012 8
  • 9. Root  Inspiration: Unix filesystem  for CMS  /content  /apps over /libs  mess: /etc adaptTo() 2012 9
  • 10. Access Control  Structures driven by permissions  /public  /private  By organizational structure  /customers/lufthansa/systems/...   adaptTo() 2012 10
  • 11. #5 References considered harmful  REFERENCEs imply referential integrity  Two documents linked via a reference...  cannot be imported/exported separately  create larger transactional boundary  UUID reference is not human readable  WEAKREFERENCE  still relies on UUIDs  Better use soft references  STRING with node path  code: handle missing target without failure adaptTo() 2012 11
  • 12. Tagging  Lazy references  Scalability  Priviliges: tag librarian vs. content author  Tags under /etc/tags  taxonomy, titles, metadata etc.  Tagged resources: cq:tags property  array: [stockphotography:animals/birds]  not automatically updated when tags change adaptTo() 2012 12
  • 13. Flexible hierarchies  Fixed structures below a base  Referenced by path  /home (~)  /content/campaigns  /libs/*/* (components)  /etc/packages/day/product/550/... adaptTo() 2012 13
  • 14. Relative paths  Overlays: /apps over /libs  projects over product, custom over default  Samples  resource types: foundation/components/text  tags: geometrixx:activity/biking  or: /etc/tags/geometrixx-­‐outdoors/activity/biking adaptTo() 2012 14
  • 15. #6 Files are Files are Files  Files and folder-like elements should use nt:file and nt:folder  Built-in node types maximize re-use  HTTP range download, WebDAV  Allows mime-type and meta data  If content needs binary data (eg. an image)  add a sub-node of type nt:file  for a list, add a sub-node of nt:folder adaptTo() 2012 15
  • 16. Images  Embed in pages  Assets have renditions  Using nt:file adaptTo() 2012 16
  • 17. #7 ID's are evil  IDs necessary in RDBMS for relations  Not required in JCR at all, see #5  Use a proper content hierarchy instead  find node names for your content  greatly enhances explorability  /mails/38956 vs. /mails/2008/08/14/happy_birthday  Naming  title of the object  hierarchy: categories, dates, letter-groups adaptTo() 2012 17
  • 18. Date based structures  If nothing works, dates work  .../2012/09/26/...  Samples  Calendar  Blog  /var/statistics/queries  ~/activities/foo/2012/09/12/... adaptTo() 2012 18
  • 19. APACHE SLING & FRIENDS TECH MEETUP BERLIN, 26-28 SEPTEMBER 2012 Thank You! Alexander Klimetschek, Adobe 19