Restored javadoc
[sixth-data.git] / doc / index.org
1 #+TITLE: Sixth Data - Data storage and computing engine
2
3 * (document settings) :noexport:
4 ** use dark style for TWBS-HTML exporter
5 #+HTML_HEAD: <link href="https://bootswatch.com/3/darkly/bootstrap.min.css" rel="stylesheet">
6 #+HTML_HEAD: <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
7 #+HTML_HEAD: <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js"></script>
8 #+HTML_HEAD: <style type="text/css">
9 #+HTML_HEAD:   footer {background-color: #111 !important;}
10 #+HTML_HEAD:   pre {background-color: #111; color: #ccc;}
11 #+HTML_HEAD: </style>
12
13 * General
14 - This is a subproject of [[https://www3.svjatoslav.eu/projects/sixth/][Sixth]] with the goal of providing data
15   storage and computation facilities.
16
17 - This program is free software: you can redistribute it and/or modify
18   it under the terms of the [[https://www.gnu.org/licenses/lgpl.html][GNU Lesser General Public License]] as
19   published by the Free Software Foundation, either version 3 of the
20   License, or (at your option) any later version.
21
22 - Program author:
23   - Svjatoslav Agejenko
24   - Homepage: https://svjatoslav.eu
25   - Email: mailto://svjatoslav@svjatoslav.eu
26
27 - [[https://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]]
28
29 ** Source code
30 - [[https://www2.svjatoslav.eu/gitweb/?p=sixth-data.git;a=snapshot;h=HEAD;sf=tgz][Download latest snapshot in TAR GZ format]]
31
32 - [[https://www2.svjatoslav.eu/gitweb/?p=sixth-data.git;a=summary][Browse Git repository online]]
33
34 - Clone Git repository using command:
35   : git clone https://www2.svjatoslav.eu/git/sixth-data.git
36
37 - See [[https://www3.svjatoslav.eu/projects/sixth-data/apidocs/][JavaDoc]].
38
39 * Vision / goal
40   :PROPERTIES:
41   :ID:       f6764282-a6f6-44e6-8716-b428074dd093
42   :END:
43 Provide hackable, versioned, optimized, distributed, geometrical,
44 arbitrary dimensional ([[id:96116550-a6a1-4700-bef7-865d0deee7ea][hypercube based]]) data storage and computation
45 engine ([[id:d2375acc-af14-4f18-8ad0-7949501178c5][as inspired by the brain]]) for general purpose visual computing
46 environment called [[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html][Sixth]].
47
48 Because [[http://www.paulgraham.com/rootsoflisp.html][Lisp is hackable self defined programmable programming
49 language]] it would be used to provide [[https://en.wikipedia.org/wiki/Imperative_programming][imperative programming]] support.
50 * Inspiration
51 :PROPERTIES:
52 :ID:       0fa6354b-18c9-4120-bbf5-c7239aebecab
53 :END:
54 + see also: [[https://en.wikipedia.org/wiki/OLAP_cube][OLAP cube]].
55 ** Brain
56   :PROPERTIES:
57   :ID:       d2375acc-af14-4f18-8ad0-7949501178c5
58   :END:
59 + Brain appears to be natural geometrical/parallel data storage and
60   computational engine:
61   + https://www.quantamagazine.org/the-brain-maps-out-ideas-and-memories-like-spaces-20190114/
62
63 + Even more awesome is that brain appears to operate and is wired as
64   arbitrary/variable dimensional structure:
65   https://singularityhub.com/2017/06/21/is-there-a-multidimensional-mathematical-world-hidden-in-the-brains-computation/
66
67 + On top of this, this multidimensional space that brain represents
68   has dynamic/variable resolution/density:
69   + https://www.quantamagazine.org/goals-and-rewards-redraw-the-brains-map-of-the-world-20190328
70
71 + Such properties allow parallel [[id:171fe375-c737-41e6-b429-a414f6abc5d8][Geometrical computation]] and
72   beautifully fits [[id:01aa65c1-3d44-44a8-9b90-58454bc6be80][CM-1 Connection Machine]] architecture (for extra
73   hardware accelerated solution).
74
75 ** CM-1 Connection Machine
76 :PROPERTIES:
77 :ID:       01aa65c1-3d44-44a8-9b90-58454bc6be80
78 :END:
79 https://en.wikipedia.org/wiki/Connection_Machine
80
81 Massively parallel (thousands of CPUs) connected via
82 machine's internal 12-dimensional hypercube network allows to
83 efficiently simulate arbitrary dimensional hypercube and network
84 topology between computational units. So that when we are
85 solving/simulating for example 5 dimensional problem, we can arrange
86 computational units into virtual 5D network. See:
87 http://www.mission-base.com/tamiko/theory/cm_txts/di-ch2.html
88
89 we can pre-distribute data across computation units and perform
90 parallel [[id:171fe375-c737-41e6-b429-a414f6abc5d8][geometrical computation]].
91
92 * Reasons for hypercube as a so called first class citizen
93 :PROPERTIES:
94 :ID:       96116550-a6a1-4700-bef7-865d0deee7ea
95 :END:
96 + Hypercube is quite general purpose data structure that naturally
97   encapsulates wide variety data and problems.
98
99 + Nicely captures apparent [[id:d2375acc-af14-4f18-8ad0-7949501178c5][properties of the brain]].
100
101 + Naturally supports distributed and parallel [[id:171fe375-c737-41e6-b429-a414f6abc5d8][geometrical data storage
102   and computation.]]
103
104 + Dedicated hardware like [[id:01aa65c1-3d44-44a8-9b90-58454bc6be80][CM-1]] can be built around hypercube concept
105   that results in data, computation process and hardware, all
106   beautifully fitting together while complementing each other
107   strengths.
108
109 + Hypercube stored data (and computation process) has geometry by its
110   nature and should fit nicely with "3D first" user interface ideology
111   of the parent [[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html][Sixth]] project.
112 * Geometrical computation idea
113 :PROPERTIES:
114 :ID:       171fe375-c737-41e6-b429-a414f6abc5d8
115 :END:
116 ** Distributed computation and data storage
117    :PROPERTIES:
118    :ID:       5d287158-53ea-44a2-a754-dd862366066a
119    :END:
120 Lots of problems can be translated to geometry (use any shapes and as
121 many dimensions as you need). Solution(s) to such problems could be
122 then found via geometrical search/comparison/lookup results. As a
123 bonus, such geometrical *data storage* AND *computation* can be
124 naturally made in *parallel* and *distributed*.
125
126 Learning means building/updating/re-balancing the model (the hard
127 part). Question answering is making (relatively simple) lookups
128 (geometrical queries) against the model.
129 ** Mapping hypercube to object-oriented model and relational database
130    :PROPERTIES:
131    :ID:       a117c11e-97c1-4822-88b2-9fc10f96caec
132    :END:
133 Object oriented programming is inspired by the way human mind
134 operates. It allows programmer to express ideas to computer in a more
135 human-like terms.
136
137 It is actually also possible to map object model and relational
138 database to geometrical hyperspace:
139
140 + Object or database table row is a point in hypercube arbitrary
141   dimensional space. Each object member variable or database table
142   column can be mapped to its own dimension in hypercube. That is: if
143   class declares 4 variables for an object, then corresponding object
144   can be stored as a single point inside 4 dimensional
145   hypercube. Variable values translate to point coordinates in that
146   hypercube. That is: numbers and string can be translated to linear
147   value that can be used as a coordinate along particular dimension.
148
149 + Each object class or database table declares its own hypercube that
150   contain instances (objects) of that class or rows of a table.
151
152 ** Mapping entity relations in hypercube
153    :PROPERTIES:
154    :ID:       b6b15bd2-c78b-4c51-a343-72843a515c29
155    :END:
156 Consider we want to create database of:
157 + Books.
158 + Authors.
159 + Effort: Amount of time contributed by every author to every book
160   that he/she wrote.
161
162 Information above can be represented as 3D cube where dimensions are:
163 + X: Book
164 + Y: Author
165 + Z: Effort
166
167 Points in that cube would nicely capture many to many relations
168 between authors and the books.
169 * Current status
170 - More or less defined [[id:f6764282-a6f6-44e6-8716-b428074dd093][Vision / goal]].
171
172 - Collected some [[id:0fa6354b-18c9-4120-bbf5-c7239aebecab][inspiring]] [[id:171fe375-c737-41e6-b429-a414f6abc5d8][ideas]].
173
174 - Implemented very simple persistent key-value map.
175   - Long term goal is to use it as a backing storage engine and
176     implement more advanced features on top of this via layered
177     architecture.
178
179 * See also
180 Interesting or competing projects with good ideas:
181
182 + [[id:01aa65c1-3d44-44a8-9b90-58454bc6be80][CM-1 Connection Machine]]
183
184 + http://phantomos.org/
185   + Programs run forever. System crash or reboot does not destroy
186     state of running program.
187
188 + Taichi: A Language for High-Performance Computation onSpatially
189   Sparse Data Structures
190   + http://taichi.graphics/wp-content/uploads/2019/09/taichi_lang.pdf
191
192 + GRAKN.AI
193   + database in the form of a knowledge graph that uses machine
194     reasoning to simplify data processing challenges for AI
195     applications. https://grakn.ai/
196
197 + [[http://wiki.squeak.org/squeak/2665][Magma]]
198   + Multi-user object database for Squeak
199
200 + [[http://esug.org/data/ESUG2015/3%20wednesday/1100-1130%20SQL%20Queries%20on%20Smalltalk%20Objects/SQL%20Queries%20in%20Smalltalk%20(James%20Foster).pdf][Gemstone/S]]
201   + Completely distributed smalltalk based computing
202     system.
203
204 + [[http://www.uruk.org/emu/Taos.html][TAOS]]
205   + Completely distributed operating system/virtual machine:
206
207 + [[https://github.com/vygr/ChrysaLisp][ChrysaLisp]]
208   + Assembler/C-Script/Lisp 64 bit, MIMD, multi CPU, multi threaded,
209     multi core, multi user Parallel OS. With GUI, Terminal, OO
210     Assembler, Class libraries, C-Script compiler, Lisp interpreter,
211     Debugger, and more...