Added relations mapping idea.
[sixth-data.git] / doc / index.org
1 #+TITLE: Sixth - system for data storage, computation, exploration and interaction
2
3 -----
4 - This is a subproject of [[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html][Sixth]]
5
6 - [[http://www2.svjatoslav.eu/gitweb/?p=sixth-data.git;a=snapshot;h=HEAD;sf=tgz][download latest snapshot]]
7
8 - This program is free software; you can redistribute it and/or modify
9   it under the terms of version 3 of the [[https://www.gnu.org/licenses/lgpl.html][GNU Lesser General Public
10   License]] or later as published by the Free Software Foundation.
11
12 - Program author:
13   - Svjatoslav Agejenko
14   - Homepage: http://svjatoslav.eu
15   - Email: mailto://svjatoslav@svjatoslav.eu
16
17 - [[http://www.svjatoslav.eu/programs.jsp][other applications hosted at svjatoslav.eu]]
18
19
20 * (document settings)                                              :noexport:
21 ** use dark style for TWBS-HTML exporter
22 #+HTML_HEAD: <link href="https://bootswatch.com/darkly/bootstrap.min.css" rel="stylesheet">
23 #+HTML_HEAD: <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
24 #+HTML_HEAD: <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script>"
25 #+HTML_HEAD: <style type="text/css">
26 #+HTML_HEAD:   footer {background-color: #111 !important;}
27 #+HTML_HEAD:   pre {background-color: #111; color: #ccc;}
28 #+HTML_HEAD: </style>
29
30 * Vision / goal
31   :PROPERTIES:
32   :ID:       f6764282-a6f6-44e6-8716-b428074dd093
33   :END:
34 Provide versioned, clustered, flexible, distributed, multi-dimensional
35 data storage engine for the [[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html][Sixth computation engine]].
36
37 + Speaking of traditional relational database and object oriented
38   business applications:
39   + I hate object-relational impedance mismatch.
40
41   + I don't like to convert data between persistent database and
42   runtime objects for every transaction. How about creating united
43   database/computation engine instead to:
44   + Eliminate constant moving and converting of data between 2 systems.
45   + Abstract away difference between RAM VS persistent storage. Let
46   the system decide at runtime which data to keep in what kind of
47   memory.
48
49 * Inspiration
50 + Relational databases:
51   + Transactional.
52   + Indexable / Quickly searchable.
53
54 + Git (version control system)
55   + Versionable
56   + Branchable / mergeable.
57   + Transparent cansistency, checksumming and deduplication.
58   + (Git as a database:
59   https://www.kenneth-truyers.net/2016/10/13/git-nosql-database/ )
60
61 ** Brain
62   :PROPERTIES:
63   :ID:       d2375acc-af14-4f18-8ad0-7949501178c5
64   :END:
65 + Appears to have more than 3D dimensional design. Food for
66   thought...)
67   + https://singularityhub.com/2017/06/21/is-there-a-multidimensional-mathematical-world-hidden-in-the-brains-computation/
68
69 + It directly inspires following ideas
70   + [[id:5d287158-53ea-44a2-a754-dd862366066a][Distributed comutation and data storage]]
71   + [[id:a117c11e-97c1-4822-88b2-9fc10f96caec][Mapping of hyperspace to traditional object-oriented model]]
72   + [[id:b6b15bd2-c78b-4c51-a343-72843a515c29][Handling of relations]]
73
74 * Ideas
75 ** Distributed computation and data storage
76    :PROPERTIES:
77    :ID:       5d287158-53ea-44a2-a754-dd862366066a
78    :END:
79 Maybe every problem can be translated to geometry (use any shapes and
80 as many dimensions as you need). Solution(s) to such problems would
81 then appear as relatively simple search/comparison/lookup results. As
82 a bonus, such geometrical *data storage* AND *computation* can be
83 naturally made in *parallel* and *distributed*. That's what neurons in
84 the brain appear to be doing ! :) . Learning means building/updating
85 the model (the hard part). Question answering is making (relatively
86 simple) lookups (geometrical queries) against the model.
87 ** Mapping of hyperspace to traditional object-oriented model
88    :PROPERTIES:
89    :ID:       a117c11e-97c1-4822-88b2-9fc10f96caec
90    :END:
91 Object oriented programming is inspired by the way human mind
92 operates. It allows programmer to express ideas to computer in a more
93 human-like terms.
94
95 It is possible to map object model to geometrical hyperspace:
96
97 + Object is a point in space (universe). Each object member variable
98   translates to its own dimension. That is: if class declares 4
99   variables for an object, then corresponding object can be stored as
100   a single point inside 4 dimensional space. Variable values translate
101   to point coordinates in space. That is: Integer, floating point
102   number and even boolean and string can be translated to linear value
103   that can be used as a coordinate along particular dimension.
104
105 + Each class declares its own space (universe). All class instances
106   (objects) are points inside that particular universe. References
107   between objects of different types are hyperlinks (portals) between
108   different universes.
109 ** Handling of relations
110    :PROPERTIES:
111    :ID:       b6b15bd2-c78b-4c51-a343-72843a515c29
112    :END:
113 Consider we want to create database of books and authors. Book can
114 have multiple authors, and single person can be author for multiple
115 books. It is possible to store how many hours of work each author has
116 contributed to every book, using hyperspace as follows:
117
118 + Every dimension corresponds to one particular book author. (10
119   authors in the database, would require 10 dimensional space)
120   + Point in space corresponds to one particular book.
121     + Point location along particular (author) dimension corresponds
122       to amount of work contributed by particular author for given
123       book.
124
125 Alternatively:
126
127 + Every dimension corresponds to one particular book.
128   + Point in space corresponds to one particular author in the entire
129     database.
130     + Point location along particular (book) dimension corresponds to
131       amount of work contributed for book by given author (point).
132
133
134 * Current status
135 - More or less defined [[id:f6764282-a6f6-44e6-8716-b428074dd093][Vision / goal]].
136
137 - Collected some [[id:d2375acc-af14-4f18-8ad0-7949501178c5][ideas]].
138
139 - Implemented very simple persistent key-value map.
140   - Long term goal is to use it as a backing storage engine and
141     implement more advanced features on top of this.
142
143 * See also
144 Interesting or competing projects with good ideas:
145
146 + GRAKN.AI: database in the form of a knowledge graph that uses
147   machine reasoning to simplify data processing challenges for AI
148   applications.
149   + https://grakn.ai/
150
151 + Gemstone/S based on Smalltalk.
152   + http://esug.org/data/ESUG2015/3%20wednesday/1100-1130%20SQL%20Queries%20on%20Smalltalk%20Objects/SQL%20Queries%20in%20Smalltalk%20(James%20Foster).pdf
153
154 + Magma distributed database in Smalltalk.
155   + http://wiki.squeak.org/squeak/2665
156
157 + ZetaVM
158   + https://github.com/zetavm/zetavm