From 2316187f481ff4854fd93e381e6b1c802cd5bac0 Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Thu, 25 May 2017 23:02:21 +0300 Subject: [PATCH] Elaborated on high level vision. --- doc/data model.png | Bin 0 -> 32758 bytes doc/index.html | 507 +++++++++++++++++++++++++++++++-------------- doc/index.org | 64 ++++++ 3 files changed, 411 insertions(+), 160 deletions(-) create mode 100644 doc/data model.png diff --git a/doc/data model.png b/doc/data model.png new file mode 100644 index 0000000000000000000000000000000000000000..da3274d42da899a953b0e8935d12096be80de779 GIT binary patch literal 32758 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 literal 0 HcmV?d00001 diff --git a/doc/index.html b/doc/index.html index 29e212a..cc7cce5 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1,184 +1,357 @@ - - - + + - - - Sixth - system for data storage, computation, exploration and interaction - - + + + + + + + +" + - -
-

Sixth - system for data storage, computation, exploration and interaction

-
-

Table of Contents

- -
-
+
+

Sixth - system for data storage, computation, exploration and interaction

+
+ -
  • other applications hosted at svjatoslav.eu
  • +
  • other applications hosted at svjatoslav.eu +
  • -
    -

    1 Current status

    +
    +

    1 Vision / goal

    +

    +Provide versioned, clustered, flexible, object-relational database +functionality for the Sixth computation engine. +

    + +
      +
    • I hate object-relational impedance mismatch. +
    • + +
    • I don't like to convert data between persistent database and runtime +objects for every transaction. How about creating united +database/computation engine instead to: +
        +
      • Eliminate constant moving and converting of data between 2 systems. +
      • +
      • Abstract away difference between RAM VS persistent storage. Let +the system decide at runtime which data to keep in what kind of +memory. +
      • +
      +
    • +
    +
    + +
    +

    1.1 Inspiration

    +
    +
      +
    • Relational databases: +
        +
      • Transactional. +
      • +
      • Indexable / Quickly searchable. +
      • +
      +
    • + +
    • Git (version control system) + +
    • +
    +
    +
    + +
    +

    1.2 Solution (the big idea)

    +
    +

    +I see 4D data structure. +

    + + +
    +

    data model.png +

    +
    + +

    +Dimensions: +

    +
      +
    • List of all the objecs in the system (rows). +
    • +
    • List of all declared unique object fields (columns). +
    • +
    • List of all historical transactions/commits/versions (think of +sheets of paper). +
    • +
    • List of all concurrently running branches/threads. Branches can +appear and merge over time as needed. +
    • +
    • (Every cell is concrete field value within an object) +
    • +
    + +

    +Partitioning/clustering: +

    +
      +
    • Why not to partition/(load balance) as required across networked +physical computers along arbitrary dimension(s) declared above ? +
    • +
    + +

    +Indexing (for fast searching): +

      -
    • Implemented very simple persistent key-value map.
    • +
    • Why not to index along arbitrary dimensions (as required) ? +
    • +
    + +

    +Further optimizations: +

    +
      +
    • In current early stage, trying to focus on minimum possible set of +features that would provide maximum possible set of power/benefit :) +
    • +
    • Once featres are locked. Anything can be optimised. Optimization for +size (deduplication) can be solved using Git style content +addressible storage mechanism. +
    • +
    +
    +
    +
    + +
    +

    2 Current status

    +
    +
      +
    • Implemented very simple persistent key-value map. +

    @@ -186,11 +359,25 @@ Long term goal is to implement more advanced features on top of this.

    +
    +
    +
    +

    Author: Svjatoslav Agejenko

    +

    Created: 2017-05-25 Thu 22:58

    +

    Emacs 25.1.1 (Org-mode 8.2.10)

    +
    diff --git a/doc/index.org b/doc/index.org index 3c93341..62f2957 100644 --- a/doc/index.org +++ b/doc/index.org @@ -17,6 +17,70 @@ - [[http://svjatoslav.eu/programs.jsp][other applications hosted at svjatoslav.eu]] +* (document settings) :noexport: +** use dark style for TWBS-HTML exporter +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: " +#+HTML_HEAD: + +* Vision / goal +Provide versioned, clustered, flexible, object-relational database +functionality for the [[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html][Sixth computation engine]]. + ++ I hate object-relational impedance mismatch. + ++ I don't like to convert data between persistent database and runtime + objects for every transaction. How about creating united + database/computation engine instead to: + + Eliminate constant moving and converting of data between 2 systems. + + Abstract away difference between RAM VS persistent storage. Let + the system decide at runtime which data to keep in what kind of + memory. + +** Inspiration ++ Relational databases: + + Transactional. + + Indexable / Quickly searchable. + ++ Git (version control system) + + Versionable + + Branchable / mergeable. + + Transparent cansistency, checksumming and deduplication. + + (Git as a database: + https://www.kenneth-truyers.net/2016/10/13/git-nosql-database/ ) + +** Solution (the big idea) +I see 4D data structure. + +[[file:data model.png]] + +Dimensions: ++ List of all the objecs in the system (rows). ++ List of all declared unique object fields (columns). ++ List of all historical transactions/commits/versions (think of + sheets of paper). ++ List of all concurrently running branches/threads. Branches can + appear and merge over time as needed. ++ (Every cell is concrete field value within an object) + +Partitioning/clustering: ++ Why not to partition/(load balance) as required across networked + physical computers along arbitrary dimension(s) declared above ? + +Indexing (for fast searching): ++ Why not to index along arbitrary dimensions (as required) ? + +Further optimizations: ++ In current early stage, trying to focus on minimum possible set of + features that would provide maximum possible set of power/benefit :) ++ Once featres are locked. Anything can be optimised. Optimization for + size (deduplication) can be solved using Git style content + addressible storage mechanism. + * Current status - Implemented very simple persistent key-value map. -- 2.20.1