#+TITLE: Sixth Data - Data storage and computing engine
* (document settings) :noexport:
** use dark style for TWBS-HTML exporter
#+HTML_HEAD:
#+HTML_HEAD:
#+HTML_HEAD:
#+HTML_HEAD:
* General
- This program is free software: released under Creative Commons Zero
(CC0) license
- Program author:
- Svjatoslav Agejenko
- Homepage: https://svjatoslav.eu
- Email: mailto://svjatoslav@svjatoslav.eu
- [[https://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]]
** Source code
- [[https://www2.svjatoslav.eu/gitweb/?p=sixth-data.git;a=snapshot;h=HEAD;sf=tgz][Download latest snapshot in TAR GZ format]]
- [[https://www2.svjatoslav.eu/gitweb/?p=sixth-data.git;a=summary][Browse Git repository online]]
- Clone Git repository using command:
: git clone https://www2.svjatoslav.eu/git/sixth-data.git
- See [[https://www3.svjatoslav.eu/projects/sixth-data/apidocs/][JavaDoc]].
* Vision / goal
:PROPERTIES:
:ID: f6764282-a6f6-44e6-8716-b428074dd093
:END:
Provide hackable, versioned, optimized, distributed, geometrical,
arbitrary dimensional ([[id:96116550-a6a1-4700-bef7-865d0deee7ea][hypercube based]]) data storage and computation
engine ([[id:d2375acc-af14-4f18-8ad0-7949501178c5][as inspired by the brain]]) for general purpose visual computing
environment called [[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html][Sixth]].
Because [[http://www.paulgraham.com/rootsoflisp.html][Lisp is hackable self defined programmable programming
language]] it would be used to provide [[https://en.wikipedia.org/wiki/Imperative_programming][imperative programming]] support.
* Inspiration
:PROPERTIES:
:ID: 0fa6354b-18c9-4120-bbf5-c7239aebecab
:END:
+ see also: [[https://en.wikipedia.org/wiki/OLAP_cube][OLAP cube]].
** Brain
:PROPERTIES:
:ID: d2375acc-af14-4f18-8ad0-7949501178c5
:END:
+ Brain appears to be natural geometrical/parallel data storage and
computational engine:
+ https://www.quantamagazine.org/the-brain-maps-out-ideas-and-memories-like-spaces-20190114/
+ [[https://www.simonsfoundation.org/2021/04/07/geometrical-thinking-offers-a-window-into-computation/][Geometrical Thinking Offers a Window Into Computation]]
+ Even more awesome is that brain appears to operate and is wired as
arbitrary/variable dimensional structure:
https://singularityhub.com/2017/06/21/is-there-a-multidimensional-mathematical-world-hidden-in-the-brains-computation/
+ On top of this, this multidimensional space that brain represents
has dynamic/variable resolution/density:
+ https://www.quantamagazine.org/goals-and-rewards-redraw-the-brains-map-of-the-world-20190328
+ Such properties allow parallel [[id:171fe375-c737-41e6-b429-a414f6abc5d8][Geometrical computation]] and
beautifully fits [[id:01aa65c1-3d44-44a8-9b90-58454bc6be80][CM-1 Connection Machine]] architecture (for extra
hardware accelerated solution).
** CM-1 Connection Machine
:PROPERTIES:
:ID: 01aa65c1-3d44-44a8-9b90-58454bc6be80
:END:
https://en.wikipedia.org/wiki/Connection_Machine
Massively parallel (thousands of CPUs) connected via
machine's internal 12-dimensional hypercube network allows to
efficiently simulate arbitrary dimensional hypercube and network
topology between computational units. So that when we are
solving/simulating for example 5 dimensional problem, we can arrange
computational units into virtual 5D network. See:
http://www.mission-base.com/tamiko/theory/cm_txts/di-ch2.html
we can pre-distribute data across computation units and perform
parallel [[id:171fe375-c737-41e6-b429-a414f6abc5d8][geometrical computation]].
* Reasons for hypercube as a so called first class citizen
:PROPERTIES:
:ID: 96116550-a6a1-4700-bef7-865d0deee7ea
:END:
+ Hypercube is quite general purpose data structure that naturally
encapsulates wide variety data and problems.
+ Nicely captures apparent [[id:d2375acc-af14-4f18-8ad0-7949501178c5][properties of the brain]].
+ Naturally supports distributed and parallel [[id:171fe375-c737-41e6-b429-a414f6abc5d8][geometrical data storage
and computation.]]
+ Dedicated hardware like [[id:01aa65c1-3d44-44a8-9b90-58454bc6be80][CM-1]] can be built around hypercube concept
that results in data, computation process and hardware, all
beautifully fitting together while complementing each other
strengths.
+ Hypercube stored data (and computation process) has geometry by its
nature and should fit nicely with "3D first" user interface ideology
of the parent [[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html][Sixth]] project.
* Geometrical computation idea
:PROPERTIES:
:ID: 171fe375-c737-41e6-b429-a414f6abc5d8
:END:
** Distributed computation and data storage
:PROPERTIES:
:ID: 5d287158-53ea-44a2-a754-dd862366066a
:END:
Lots of problems can be translated to geometry (use any shapes and as
many dimensions as you need). Solution(s) to such problems could be
then found via geometrical search/comparison/lookup results. As a
bonus, such geometrical *data storage* AND *computation* can be
naturally made in *parallel* and *distributed*.
Learning means building/updating/re-balancing the model (the hard
part). Question answering is making (relatively simple) lookups
(geometrical queries) against the model.
** Mapping hypercube to object-oriented model and relational database
:PROPERTIES:
:ID: a117c11e-97c1-4822-88b2-9fc10f96caec
:END:
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 actually also possible to map object model and relational
database to geometrical hyperspace:
+ Object or database table row is a point in hypercube arbitrary
dimensional space. Each object member variable or database table
column can be mapped to its own dimension in hypercube. That is: if
class declares 4 variables for an object, then corresponding object
can be stored as a single point inside 4 dimensional
hypercube. Variable values translate to point coordinates in that
hypercube. That is: numbers and string can be translated to linear
value that can be used as a coordinate along particular dimension.
+ Each object class or database table declares its own hypercube that
contain instances (objects) of that class or rows of a table.
** Mapping entity relations in hypercube
:PROPERTIES:
:ID: b6b15bd2-c78b-4c51-a343-72843a515c29
:END:
Consider we want to create database of:
+ Books.
+ Authors.
+ Effort: Amount of time contributed by every author to every book
that he/she wrote.
Information above can be represented as 3D cube where dimensions are:
+ X: Book
+ Y: Author
+ Z: Effort
Points in that cube would nicely capture many to many relations
between authors and the books.
* Current status
- More or less defined [[id:f6764282-a6f6-44e6-8716-b428074dd093][Vision / goal]].
- Collected some [[id:0fa6354b-18c9-4120-bbf5-c7239aebecab][inspiring]] [[id:171fe375-c737-41e6-b429-a414f6abc5d8][ideas]].
- Implemented very simple persistent key-value map.
- Long term goal is to use it as a backing storage engine and
implement more advanced features on top of this via layered
architecture.