Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
File Access and Storage with the TYPO3 Content Repository
1. File Access and Storage
with the TYPO3 Content Repository
Master Thesis Presentation – 04/20/2009
Eastern Michigan University – Department of Computer Science
Thesis Chair: Professor William Sverdlik
Committee Member: Professor Michael Zeiger
Committee Member: Professor Augustine C. Ikeji
2. Overview
Introduction
General Problem
What have others done?
TYPO3 Content Repository
WebDAV
Implementation
Results
Conclusion / Future work
File Access and Storage
with the TYPO3 Content Repository
3. Introduction
What is:
Content?
Content Repository?
JCR?
TYPO3 Content Repository?
File Access and Storage
with the TYPO3 Content Repository
4. Introduction
What is:
Content?
Content Repository?
JCR?
TYPO3 Content Repository?
File Access and Storage
with the TYPO3 Content Repository
5. Introduction
What is:
Content?
Content Repository?
JCR?
TYPO3 Content Repository?
File Access and Storage
with the TYPO3 Content Repository
6. Introduction
What is:
Content?
Content Repository?
JCR?
TYPO3 Content Repository?
File Access and Storage
with the TYPO3 Content Repository
7. Introduction
What is:
Content?
Content Repository?
JCR?
TYPO3 Content Repository?
File Access and Storage
with the TYPO3 Content Repository
8. General Problem
How do I store files?
Images and other
documents need to be
transferred into the
content repository
„Content is everything“
David Nüscheler
File Access and Storage
with the TYPO3 Content Repository
9. What have others done?
HTTP/1.0 – GET, HEAD and POST
HTTP/1.1 – OPTIONS, DELETE, PUT
FTP
CMIS – Content Management Interoperability
Services v0.5
WebDAV – set of extension to the HTTP/1.1
protocol
File Access and Storage
with the TYPO3 Content Repository
10. Goal of study
To create an
implementation of the WebDAV protocol
to access files
in the TYPO3 Content Repository
File Access and Storage
with the TYPO3 Content Repository
11. TYPO3 Content Repository – What?
A JCR compliant repository in PHP
JCR combines best
of both worlds
JCR is a standard
to access a
content repository
File Access and Storage
with the TYPO3 Content Repository
12. TYPO3 Content Repository – Why?
Current situation
File Access and Storage
with the TYPO3 Content Repository
13. TYPO3 Content Repository – Why?
First migration step
File Access and Storage
with the TYPO3 Content Repository
14. TYPO3 Content Repository – Why?
Last migration step
File Access and Storage
with the TYPO3 Content Repository
15. TYPO3 Content Repository – How?
Tree of nodes
File Access and Storage
with the TYPO3 Content Repository
16. TYPO3 Content Repository – How?
JCR defines three levels
Level 1 – Read access
Level 2 – Write access
Optional
Transactions
Versioning
Locking
Observations
Access Control
File Access and Storage
with the TYPO3 Content Repository
17. TYPO3 Content Repository – How?
JCR defines three levels
Level 1 – Read access
Level 2 – Write access
Optional
Transactions
Versioning
Locking
Observations
Access Control Not implemented yet!
File Access and Storage
with the TYPO3 Content Repository
18. WebDAV
Web-based Distributed Authoring and Versioning
A set of extensions to the HTTP/1.1 protocol
PROPFIND
PROPPATCH
MOVE
COPY
UNLOCK
LOCK
Uses XML and additional headers to transport
information.
File Access and Storage
with the TYPO3 Content Repository
19. WebDAV - Benefits
Locking of resources
Same user for the content repository as for
the content-application
Change properties
Find properties
Define own properties
Listing hierarchical data
File Access and Storage
with the TYPO3 Content Repository
20. Implementation - Requirements
Define an information model
add extra informations from files
Map WebDAV to JCR
Ensure compatibility to different clients
Create reusable components
to replace the storage backend
Support basic file-system functionality
File Access and Storage
with the TYPO3 Content Repository
21. Implementation - Requirements
Non-functional Requirements
Interoperability
Efficiency
Usability
Confidentiality
Integrity
Recoverability
File Access and Storage
with the TYPO3 Content Repository
22. Filename (nt:file)
- jcr:created (date)
Implementation - jcr:createdBy (string)
+ jcr:content (nt:resource)
- jcr:data (binary)
Information model - jcr:mimeType (string)
- jcr:encoding (string)
- jcr:lastModified (date)
Basic resource information - jcr:lastModifiedBy (string)
Additional file information - flow3:contentLength (integer)
- flow3:title (string)
E.g. image with exif and GPS - flow3:author (string)
- flow3:comments (string)
- flow3:keywords (string)
- flow3:cameraModel (string)
- flow3:imageHeight (string)
- flow3:imageWidth (string)
- gps:latitude (string)
- gps:longitude (string)
- gps:altitude (string)
File Access and Storage
with the TYPO3 Content Repository
23. Implementation
Map WebDAV to JCR
JCR
WebDAV
jcr:created
DAV:creationdate
jcr:lastModied
DAV:getlastmodied
flow3:contentLength
DAV:getcontentlength
jcr:mimeType / jcr:encoding
DAV:getcontenttype
primary type: nt:file / nt:folder
DAV:resourcetype
jcr:data
GET and PUT Message-Body
File Access and Storage
with the TYPO3 Content Repository
27. Implementation - Review
Feature Content Repository File-system
connector connector
Create folder YES YES
Create file YES YES
Delete folder YES YES
Delete file YES YES
Edit file YES YES
List contents YES YES
Copy folder NO YES
Copy file NO YES
Move folder NO YES
Move file NO YES
User auth. NO NO
Versioning NO NO
Locking NO NO
File Access and Storage
with the TYPO3 Content Repository
28. Results
Introduced
TYPO3 Content Repository
WebDAV
Determined requirements
Created a design
Developed a prototype
Prototype can transfer files into the repository
File Access and Storage
with the TYPO3 Content Repository
29. Results
Extra information from a file is stored
Content Repository provides a solution to
consistently store information
Files are handled in the same way as other
content / no file specific functions
Content Repository combines benefits of a
Database, a file-system and XML
File Access and Storage
with the TYPO3 Content Repository
30. Results - Efficiency
Action Latency Duration
PROPFIND (15 files) +2.40s (+300%) +65ms (130%)
PROPPATCH +0.35s (+44%) +0ms (+0%)
GET +0.35s (+44%) +12ms(+120%)
HEAD +0.35s (+44%) +12ms(+120%)
DELETE +0.60s (+75%) +0ms (+0%)
PUT +1.50s (+187%) +1ms(+100%)
MOVE - -
COPY - -
File Access and Storage
with the TYPO3 Content Repository
31. Results - Interoperability
User-Agent Encoding of foldername ÄÖÜäöü
WebFolders (Win) %C3%84%C3%96%C3%9C%C3%A4%C3%B6%C3%BC
DAV Explorer (Win) %C4%D6%DC%E4%F6%FC
Naja (Win) (international characters not supported)
Cyberduck (Mac) %C3%84%C3%96%C3%9C%C3%A4%C3%B6%C3%BC
WebDAV-FS (Mac) A%CC%88O%CC%88U%CC%88a%CC%88o%CC%88u%CC%88
File Access and Storage
with the TYPO3 Content Repository
32. Results - Usability
Not all functionality could be implemented.
An error occurs when the user tries to
move a file / folder
copy a file / folder
rename a file / folder
This reduces the usability
File Access and Storage
with the TYPO3 Content Repository
33. Results
Confidentiality is not provided
Access Control has not been implemented in the
content repository
Integrity is provided
Content-length is checked against the content-length
header
Recoverability is not provided
Versioning has not been implemented in the content
repository
File Access and Storage
with the TYPO3 Content Repository
34. Results - Challenges
Request Handler doesn‘t support WebDAV requests
Request Handler couldn‘t be replaced
MVC Routing Mechanism couldn‘t redirect
to Default Controller of the prototype
Session->isNodeType was not implemented
Value->getBinary was not implemented
PHP 5.3 RC1 is unstable / throws segmentation faults
Interoperability with different clients
File Access and Storage
with the TYPO3 Content Repository
35. Conclusion
Content Repository has been introduced
WebDAV has been introduced
A prototype has been created that stores
successfully files with the content repository
WebDAV is an appropriate protocol
A standard to use
international characters is missing
File Access and Storage
with the TYPO3 Content Repository
36. Conclusion
TYPO3 Content Repository is not ready for
production use but ready for pilot projects
TYPO3 Association provides a perfect plattform
to develop projects
The community around TYPO3 is very helpful
and provides useful feedback
File Access and Storage
with the TYPO3 Content Repository
37. Future work
Support locking, versioning and authentication
Tagging content / Virtual folders
Performance improvements through caching
Additional filters to extract file information
Observation of CMIS – Content Management
Information Services
File Access and Storage
with the TYPO3 Content Repository