Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Neos Conference 2019: Announcing the Event Sour...

Neos Conference 2019: Announcing the Event Sourced Content Repository Alpha 1

Sebastian Kurfürst

May 11, 2019
Tweet

More Decks by Sebastian Kurfürst

Other Decks in Technology

Transcript

  1. NodeDataRepository NodeInterface Doctrine ORM "naive" Database Schema Identity Map Fusion

    / FlowQuery Read API Write API Dimension handling NodeData Not well defined slow for big node trees, performance hard to predict hard to reproduce bugs (sometimes) orphan nodes sometimes possible advanced features hard to integrate Masking of deleted nodes (Shadow Nodes) Workspace Shine Through Node Type Management
  2. Fusion / FlowQuery Read API Write API Node Type Management

    TraversableNodeInterface NodeInterface Commands NodeDataRepository Doctrine ORM "naive" Database Schema Identity Map Dimension handling NodeData Masking of deleted nodes (Shadow Nodes) Workspace Shine Through
  3. Fusion / FlowQuery Read API Write API Node Type Management

    TraversableNodeInterface NodeInterface Commands Dimension Space layer Content Stream / Workspace layer Doctrine ORM "naive" Database Schema Identity Map
  4. Doctrine DBAL Runtime Cache Fusion / FlowQuery Read API Write

    API Node Type Management TraversableNodeInterface NodeInterface Commands Dimension Space layer Content Stream / Workspace layer "naive" Database Schema
  5. Dimension Space layer Content Graph Event Store Commands Content Stream

    / Workspace layer Fusion / FlowQuery Read API TraversableNodeInterface NodeInterface Node Type Management Write API well defined, sound concept optimized for move and other complex cases basis for advanced features great performance Doctrine DBAL Runtime Cache
  6. update projections append events Event Sourced Architecture Events "modify" read*

    Event Store e1 e1 Node properties were updated e2 Node was created e3 Node properties were updated e4 Workspace was created
  7. Projections can be rebuilt DB Tables Empty DB Tables apply

    event 1 DB Tables apply event 2 apply event 3 apply event 4 apply event 1000
  8. write side read side (projections) Event store (DB Table) Content

    Graph Commands Events Workspace Changes (soft) constraints …
  9. immediately consistent strongly consistent not consistent eventually* consistent *eventually !=

    eventuell (DE) eventually == at some point in the future eventually == "bald" Consistency
  10. No fork anymore, installable in Neos 4.3 instance! * *

    currently we still need a minor patch to Neos UI
  11. NodeMutation* convenience wrapper around commands Legacy NodeInterface property access traversal

    active-record style creation and mutation methods TraversableNodeInterface traversal NodeInterface property access New Commands *planned included in Neos 4.3 Content Graph / Subgraph NodeDataRepository !!no API!!
  12. implemented the difficult features move node delete node show/hide recursively

    shine through workspaces content dimensions partial workspace publishing
  13. Alpha 1 do not use in production just yet play

    around with it still rough around the edges
  14. Supported: no dimensions Supported: < 10 000 nodes internally tested:

    dimensions with fallbacks internally tested: 50 000 nodes today
  15. Supported: dimensions without fallbacks Supported: < 50 000 nodes internally

    tested: dimensions with fallbacks internally tested: 50 000 nodes today+
  16. Supported: dimensions with fallbacks Supported: 50 000 nodes internally tested:

    dimensions with fallbacks internally tested: >100 000 nodes today++
  17. composer.json "repositories": [ { "type": "git", "url": "https://github.com/neos/contentrepository-development-collection.git" }, {

    "type": "git", "url": "https://github.com/neos/content-repository-dimensionspace.git" } ], "require": { "neos/contentrepository-development-collection": "dev-master", "neos/content-repository-dimensionspace": "dev-master", "neos/event-sourcing": "dev-master", "neos/neos-ui": "dev-event-sourced-patch as dev-master" }