Adam Retter

adam@evolvedbinary.com
 

Unconference - XML Prague
2019-02-07


@adamretter

This talk...

  • Trying not to pre-empt. tomorrows conference talk!

  • Demo some pre-beta version features

  • AMA - Ask Me Anything!

What is FusionDB?

  • Multi-model database

    • Document

      • XML and Binary

      • JSON native - work in progress

    • Key/Value

  • ACID

    • MVCC

    • Snapshot Isolation

  • Written in C++ 14 and Java

  • 100% eXist-db API Compatible

  • Will be Open Sourced...

  • IDE

    • Not designed to replace comprehensive tools like Oxygen!

    • Create and Edit Documents in the database

    • Execute XQuery against the database

    • Serialization Settings and Paging

  • Management Tool

    • Connect to Multiple servers

    • Browse Documents in the database

    • Upload/Copy/Move/Delete Documents

    • Modify Document Properties - permissions, type, metadata, etc.

    • Create/Edit/Delete Indexes

    • Create/Edit/Delete Users

Fusion Studio

Fusion Studio

Behind Fusion Studio

Demo - Fusion Studio

FusionDB Architecture

Demo - What's on the disk?

  • Univerally Unique Identifier

    • v1 with random MAC

    • Very fast generation (> 5 Million / sec)

  • Assigned to every resource e.g. Documents and Collections

  • Resources retrieval by UUID

  • Immutable

    • Immune to move/rename/copy

  • Persist across backup/restore

    • Restore - Collision Protection

  • e.g. Provenance / External Systems / Archival

UUID Locators

Demo - UUID Locators

  • Uses the key/value Model

    • Just the tip of the iceberg!

  • Metadata can be assigned to any resource e.g. Documents and Collections

  • Resources Queryable by Key or, Key and Value

  • Index Backed for Performance

  • XQuery Metadata Module

    • Metadata CRUD operations

    • Search by Metadata

Key/Value Metadata

Demo - Key/Value Metadata in XQuery

  • eXist-db style Data Export

    • Snapshot Consistent

    • Lock-free!

  • Checkpoint Backup

    • Exploits immutable nature of SST files

    • Full Backup! Could add differential in future

    • Almost Instantaneous!

      • Hard links on same filesystem

      • Simple file copy if across filesystems

Backup Facilities

Demo - Backup Facilities

  • Snapshot Isolation

  • Each XQuery is a distinct transaction

    • auto-abort if error is raised

    • auto-commit on successful completion

  • try/catch

    • Creates a Sub-Transaction

      • auto-abort on entering catch clause

      • auto-commit on try body completion

    • Allows the user to control transactional updates

    • Nesting try/catch... nests sub-transactions

ACID Transactions and XQuery

Demo - Transactions and XQuery

  • Deduplication

    • BLOB identity established through BLAKE256 digest

    • Each BLOB maintains a reference count

    • Vacuum process hoovers up any BLOBs with count=0

      • Unless they are recycled first!

  • Move is a zero I/O operation

  • Copy is an almost zero I/O operation

    • Uses just a few bytes more for each copy

  • Backup

    • eXist style data export can also deuplicate BLOBs

BLOB Store

Demo - BLOB Store

Thank You!
Ask Me Anything...