Added hyperspace to object 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 + From there come following ideas:
70   + Maybe every problem can be translated to geometry (use any shapes
71     and as many dimensions as you need). Solution(s) to such problems
72     would then appear as relatively simple search/comparison/lookup
73     results. As a bonus, such geometrical *data storage* AND
74     *computation* can be naturally made in *parallel* and
75     *distributed*. That's what neurons in the brain appear to be doing
76     ! :) . Learning means building/updating the model (the hard
77     part). Question answering is making (relatively simple) lookups
78     (geometrical queries) against the model.
79
80   + Mapping of hyperspace to traditional object-oriented programming
81     model:
82     + Object is a point in space (universe). Each object member
83       variable translates to its own dimension. That is: if class
84       declares 4 variables for an object, then corresponding object
85       can be stored as a single point inside 4 dimensional
86       space. Variable values translate to point coordinates in
87       space. That is: Integer, floating point number and even boolean
88       and string can be translated to linear value that can be used as
89       a coordinate along particular dimension.
90
91     + Each class declares its own space (universe). All class
92       instances (objects) are points inside that particular
93       universe. References between objects of different types are
94       hyperlinks (portals) between different universes.
95
96 * Current status
97 - More or less defined [[id:f6764282-a6f6-44e6-8716-b428074dd093][Vision / goal]].
98
99 - Collected some [[id:d2375acc-af14-4f18-8ad0-7949501178c5][ideas]].
100
101 - Implemented very simple persistent key-value map.
102   - Long term goal is to use it as a backing storage engine and
103     implement more advanced features on top of this.
104
105 * See also
106 Interesting or competing projects with good ideas:
107
108 + GRAKN.AI: database in the form of a knowledge graph that uses
109   machine reasoning to simplify data processing challenges for AI
110   applications.
111   + https://grakn.ai/
112
113 + Gemstone/S based on Smalltalk.
114   + http://esug.org/data/ESUG2015/3%20wednesday/1100-1130%20SQL%20Queries%20on%20Smalltalk%20Objects/SQL%20Queries%20in%20Smalltalk%20(James%20Foster).pdf
115
116 + Magma distributed database in Smalltalk.
117   + http://wiki.squeak.org/squeak/2665