X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=doc%2Findex.html;h=b116d4ebda2e250d490a3116cfd37a7f85926527;hb=501a45a40586b9bc32c5b228661bfa49a583f548;hp=0fc38fe52e60b059efa10e8486d947f1022c2f4f;hpb=6da6d15b3291c8e14035f5f4f2bd8a2493ab0143;p=sixth-data.git diff --git a/doc/index.html b/doc/index.html index 0fc38fe..b116d4e 100644 --- a/doc/index.html +++ b/doc/index.html @@ -2,7 +2,7 @@ Sixth - system for data storage, computation, exploration and interaction - + @@ -236,6 +236,7 @@ data storage engine for the
  • Speaking of traditional relational database and object oriented business applications: + -
  • - + -
    -

    1.1 Inspiration

    -
    + + +
    +

    3 Ideas

    +
    +
    +

    3.1 Distributed computation and data storage

    +
    +

    +Maybe every problem can be translated to geometry (use any shapes and +as many dimensions as you need). Solution(s) to such problems would +then appear as relatively simple search/comparison/lookup results. As +a bonus, such geometrical *data storage* AND *computation* can be +naturally made in *parallel* and *distributed*. That's what neurons in +the brain appear to be doing ! :) . Learning means building/updating +the model (the hard part). Question answering is making (relatively +simple) lookups (geometrical queries) against the model. +

    +
    +
    +
    +

    3.2 Mapping of hyperspace to traditional object-oriented model

    +
    +

    +Object oriented programming is inspired by the way human mind +operates. It allows programmer to express ideas to computer in a more +human-like terms. +

    + +

    +It is possible to map object model to geometrical hyperspace: +

    + +
      +
    • Object is a point in space (universe). Each object member variable +translates to its own dimension. That is: if class declares 4 +variables for an object, then corresponding object can be stored as +a single point inside 4 dimensional space. Variable values translate +to point coordinates in space. That is: Integer, floating point +number and even boolean and string can be translated to linear value +that can be used as a coordinate along particular dimension. +
    • + +
    • Each class declares its own space (universe). All class instances +(objects) are points inside that particular universe. References +between objects of different types are hyperlinks (portals) between +different universes. +
    • +
    +
    +
    +
    +

    3.3 Handling of relations

    +
    +

    +Consider we want to create database of books and authors. Book can +have multiple authors, and single person can be author for multiple +books. It is possible to store how many hours of work each author has +contributed to every book, using hyperspace as follows: +

    + +
      +
    • Every dimension corresponds to one particular book author. (10 +authors in the database, would require 10 dimensional space) +
        +
      • Point in space corresponds to one particular book. +
          +
        • Point location along particular (author) dimension corresponds +to amount of work contributed by particular author for given +book. +
        • +
        +
      • +
      +
    • +
    + +

    +Alternatively: +

    + +
      +
    • Every dimension corresponds to one particular book.
        -
      • From there comes following idea: Maybe every problem can be -translated to geometry (use any shapes and as many dimensions as -you need). Solution(s) to such problems would then appear as -relatively simple search/comparison/lookup results. As a bonus, -such geometrical *data storage* AND *computation* can be -naturally made in *parallel* and *distributed*. That's what -neurons in the brain appear to be doing ! :) . Learning means -building/updating the model (the hard part). Question answering -is making (relatively simple) lookups (geometrical queries) -against the model. +
      • Point in space corresponds to one particular author in the entire +database. +
          +
        • Point location along particular (book) dimension corresponds to +amount of work contributed for book by given author (point).
      • @@ -307,15 +413,49 @@ against the model.
    + +
    +

    3.4 Layered architecture

    +
    +
    +
    layer 1
    disk / block storage / partition +
    + +
    layer 2
    key/value storage. Keys are unique and are dictated by +storage engine. Value is arbitrary but limited size byte +array. This layer is responsible for handling disk +defragmentation and consistency in case of crash +recovery. +
    + +
    layer 3
    key/value storage. Keys are content hashes. Values are +arbitrary but limited size content byte arrays. This +layer effectively implements content addressable +storage. Content addressible storage enables GIT-like +behavior (possibility for competing branches, retaining +history, transparent deduplication) +
    + +
    layer 4
    Implements arbitrary dimensional multiverse. +
    + +
    layer 5
    Distributed computation engine. +
    +
    +
    +
    -
    -

    2 Current status

    -
    +
    +

    4 Current status

    +
    • More or less defined Vision / goal.
    • +
    • Collected some ideas. +
    • +
    • Implemented very simple persistent key-value map.
      • Long term goal is to use it as a backing storage engine and @@ -327,12 +467,16 @@ implement more advanced features on top of this.
    -
    -

    3 TODO

    -
    +
    +

    5 See also

    +
    +

    +Interesting or competing projects with good ideas: +

    +