d0f979d5b047cfde09b816345d0080da6f77137e
[sixth-data.git] / doc / index.html
1 <!doctype html>
2 <html lang="en">
3 <head>
4 <title>Sixth - system for data storage, computation, exploration and interaction</title>
5 <!-- 2017-07-19 Wed 21:46 -->
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width, initial-scale=1">
8 <meta name="generator" content="Org-mode">
9 <meta name="author" content="Svjatoslav Agejenko">
10 <link href="https://bootswatch.com/darkly/bootstrap.min.css" rel="stylesheet">
11 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
12 <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script>"
13 <style type="text/css">
14 footer {background-color: #111 !important;}
15 pre {background-color: #111; color: #ccc;}
16 </style>
17 <style type="text/css">
18 /* org mode styles on top of twbs */
19
20 html {
21     position: relative;
22     min-height: 100%;
23 }
24
25 body {
26     font-size: 18px;
27     margin-bottom: 105px;
28 }
29
30 footer {
31     position: absolute;
32     bottom: 0;
33     width: 100%;
34     height: 101px;
35     background-color: #f5f5f5;
36 }
37
38 footer > div {
39     padding: 10px;
40 }
41
42 footer p {
43     margin: 0 0 5px;
44     text-align: center;
45     font-size: 16px;
46 }
47
48 #table-of-contents {
49     margin-top: 20px;
50     margin-bottom: 20px;
51 }
52
53 blockquote p {
54     font-size: 18px;
55 }
56
57 pre {
58     font-size: 16px;
59 }
60
61 .footpara {
62     display: inline-block;
63 }
64
65 figcaption {
66   font-size: 16px;
67   color: #666;
68   font-style: italic;
69   padding-bottom: 15px;
70 }
71
72 /* from twbs docs */
73
74 .bs-docs-sidebar.affix {
75     position: static;
76 }
77 @media (min-width: 768px) {
78     .bs-docs-sidebar {
79         padding-left: 20px;
80     }
81 }
82
83 /* All levels of nav */
84 .bs-docs-sidebar .nav > li > a {
85     display: block;
86     padding: 4px 20px;
87     font-size: 14px;
88     font-weight: 500;
89     color: #999;
90 }
91 .bs-docs-sidebar .nav > li > a:hover,
92 .bs-docs-sidebar .nav > li > a:focus {
93     padding-left: 19px;
94     color: #A1283B;
95     text-decoration: none;
96     background-color: transparent;
97     border-left: 1px solid #A1283B;
98 }
99 .bs-docs-sidebar .nav > .active > a,
100 .bs-docs-sidebar .nav > .active:hover > a,
101 .bs-docs-sidebar .nav > .active:focus > a {
102     padding-left: 18px;
103     font-weight: bold;
104     color: #A1283B;
105     background-color: transparent;
106     border-left: 2px solid #A1283B;
107 }
108
109 /* Nav: second level (shown on .active) */
110 .bs-docs-sidebar .nav .nav {
111     display: none; /* Hide by default, but at >768px, show it */
112     padding-bottom: 10px;
113 }
114 .bs-docs-sidebar .nav .nav > li > a {
115     padding-top: 1px;
116     padding-bottom: 1px;
117     padding-left: 30px;
118     font-size: 12px;
119     font-weight: normal;
120 }
121 .bs-docs-sidebar .nav .nav > li > a:hover,
122 .bs-docs-sidebar .nav .nav > li > a:focus {
123     padding-left: 29px;
124 }
125 .bs-docs-sidebar .nav .nav > .active > a,
126 .bs-docs-sidebar .nav .nav > .active:hover > a,
127 .bs-docs-sidebar .nav .nav > .active:focus > a {
128     padding-left: 28px;
129     font-weight: 500;
130 }
131
132 /* Nav: third level (shown on .active) */
133 .bs-docs-sidebar .nav .nav .nav {
134     padding-bottom: 10px;
135 }
136 .bs-docs-sidebar .nav .nav .nav > li > a {
137     padding-top: 1px;
138     padding-bottom: 1px;
139     padding-left: 40px;
140     font-size: 12px;
141     font-weight: normal;
142 }
143 .bs-docs-sidebar .nav .nav .nav > li > a:hover,
144 .bs-docs-sidebar .nav .nav .nav > li > a:focus {
145     padding-left: 39px;
146 }
147 .bs-docs-sidebar .nav .nav .nav > .active > a,
148 .bs-docs-sidebar .nav .nav .nav > .active:hover > a,
149 .bs-docs-sidebar .nav .nav .nav > .active:focus > a {
150     padding-left: 38px;
151     font-weight: 500;
152 }
153
154 /* Show and affix the side nav when space allows it */
155 @media (min-width: 992px) {
156     .bs-docs-sidebar .nav > .active > ul {
157         display: block;
158     }
159     /* Widen the fixed sidebar */
160     .bs-docs-sidebar.affix,
161     .bs-docs-sidebar.affix-bottom {
162         width: 213px;
163     }
164     .bs-docs-sidebar.affix {
165         position: fixed; /* Undo the static from mobile first approach */
166         top: 20px;
167     }
168     .bs-docs-sidebar.affix-bottom {
169         position: absolute; /* Undo the static from mobile first approach */
170     }
171     .bs-docs-sidebar.affix .bs-docs-sidenav,.bs-docs-sidebar.affix-bottom .bs-docs-sidenav {
172         margin-top: 0;
173         margin-bottom: 0
174     }
175 }
176 @media (min-width: 1200px) {
177     /* Widen the fixed sidebar again */
178     .bs-docs-sidebar.affix-bottom,
179     .bs-docs-sidebar.affix {
180         width: 263px;
181     }
182 }
183 </style>
184 <script type="text/javascript">
185 $(function() {
186     'use strict';
187
188     $('.bs-docs-sidebar li').first().addClass('active');
189
190     $(document.body).scrollspy({target: '.bs-docs-sidebar'});
191
192     $('.bs-docs-sidebar').affix();
193 });
194 </script>
195 </head>
196 <body>
197 <div id="content" class="container">
198 <div class="row"><div class="col-md-9"><h1 class="title">Sixth - system for data storage, computation, exploration and interaction</h1>
199 <hr >
200 <ul class="org-ul">
201 <li>This is a subproject of <a href="http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html">Sixth</a>
202 </li>
203
204 <li><a href="http://www2.svjatoslav.eu/gitweb/?p=sixth-data.git;a=snapshot;h=HEAD;sf=tgz">download latest snapshot</a>
205 </li>
206
207 <li>This program is free software; you can redistribute it and/or modify
208 it under the terms of version 3 of the <a href="https://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public
209 License</a> or later as published by the Free Software Foundation.
210 </li>
211
212 <li>Program author:
213 <ul class="org-ul">
214 <li>Svjatoslav Agejenko
215 </li>
216 <li>Homepage: <a href="http://svjatoslav.eu">http://svjatoslav.eu</a>
217 </li>
218 <li>Email: <a href="mailto://svjatoslav@svjatoslav.eu">mailto://svjatoslav@svjatoslav.eu</a>
219 </li>
220 </ul>
221 </li>
222
223 <li><a href="http://www.svjatoslav.eu/programs.jsp">other applications hosted at svjatoslav.eu</a>
224 </li>
225 </ul>
226
227
228 <div id="outline-container-sec-1" class="outline-2">
229 <h2 id="sec-1"><a id="ID-f6764282-a6f6-44e6-8716-b428074dd093" name="ID-f6764282-a6f6-44e6-8716-b428074dd093"></a><span class="section-number-2">1</span> Vision / goal</h2>
230 <div class="outline-text-2" id="text-1">
231 <p>
232 Provide versioned, clustered, flexible, distributed, multi-dimensional
233 data storage engine for the <a href="http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html">Sixth computation engine</a>.
234 </p>
235
236 <ul class="org-ul">
237 <li>Speaking of traditional relational database and object oriented
238 business applications:
239 <ul class="org-ul">
240 <li>I hate object-relational impedance mismatch.
241 </li>
242
243 <li>I don't like to convert data between persistent database and
244 runtime objects for every transaction. How about creating united
245 database/computation engine instead to:
246 <ul class="org-ul">
247 <li>Eliminate constant moving and converting of data between 2 systems.
248 </li>
249 <li>Abstract away difference between RAM VS persistent storage. Let
250 the system decide at runtime which data to keep in what kind of
251 memory.
252 </li>
253 </ul>
254 </li>
255 </ul>
256 </li>
257 </ul>
258 </div>
259 </div>
260
261 <div id="outline-container-sec-2" class="outline-2">
262 <h2 id="sec-2"><span class="section-number-2">2</span> Inspiration</h2>
263 <div class="outline-text-2" id="text-2">
264 <ul class="org-ul">
265 <li>Relational databases:
266 <ul class="org-ul">
267 <li>Transactional.
268 </li>
269 <li>Indexable / Quickly searchable.
270 </li>
271 </ul>
272 </li>
273
274 <li>Git (version control system)
275 <ul class="org-ul">
276 <li>Versionable
277 </li>
278 <li>Branchable / mergeable.
279 </li>
280 <li>Transparent cansistency, checksumming and deduplication.
281 </li>
282 <li>(Git as a database:
283 <a href="https://www.kenneth-truyers.net/2016/10/13/git-nosql-database/">https://www.kenneth-truyers.net/2016/10/13/git-nosql-database/</a> )
284 </li>
285 </ul>
286 </li>
287 </ul>
288 </div>
289
290 <div id="outline-container-sec-2-1" class="outline-3">
291 <h3 id="sec-2-1"><a id="ID-d2375acc-af14-4f18-8ad0-7949501178c5" name="ID-d2375acc-af14-4f18-8ad0-7949501178c5"></a><span class="section-number-3">2.1</span> Brain</h3>
292 <div class="outline-text-3" id="text-2-1">
293 <ul class="org-ul">
294 <li>Appears to have more than 3D dimensional design. Food for
295 thought&#x2026;)
296 <ul class="org-ul">
297 <li><a href="https://singularityhub.com/2017/06/21/is-there-a-multidimensional-mathematical-world-hidden-in-the-brains-computation/">https://singularityhub.com/2017/06/21/is-there-a-multidimensional-mathematical-world-hidden-in-the-brains-computation/</a>
298 </li>
299 </ul>
300 </li>
301
302 <li>From there come following ideas:
303 <ul class="org-ul">
304 <li>Maybe every problem can be translated to geometry (use any shapes
305 and as many dimensions as you need). Solution(s) to such problems
306 would then appear as relatively simple search/comparison/lookup
307 results. As a bonus, such geometrical *data storage* AND
308 *computation* can be naturally made in *parallel* and
309 *distributed*. That's what neurons in the brain appear to be doing
310 ! :) . Learning means building/updating the model (the hard
311 part). Question answering is making (relatively simple) lookups
312 (geometrical queries) against the model.
313 </li>
314
315 <li>Mapping of hyperspace to traditional object-oriented programming
316 model:
317 <ul class="org-ul">
318 <li>Object is a point in space (universe). Each object member
319 variable translates to its own dimension. That is: if class
320 declares 4 variables for an object, then corresponding object
321 can be stored as a single point inside 4 dimensional
322 space. Variable values translate to point coordinates in
323 space. That is: Integer, floating point number and even boolean
324 and string can be translated to linear value that can be used as
325 a coordinate along particular dimension.
326 </li>
327
328 <li>Each class declares its own space (universe). All class
329 instances (objects) are points inside that particular
330 universe. References between objects of different types are
331 hyperlinks (portals) between different universes.
332 </li>
333 </ul>
334 </li>
335 </ul>
336 </li>
337 </ul>
338 </div>
339 </div>
340 </div>
341
342 <div id="outline-container-sec-3" class="outline-2">
343 <h2 id="sec-3"><span class="section-number-2">3</span> Current status</h2>
344 <div class="outline-text-2" id="text-3">
345 <ul class="org-ul">
346 <li>More or less defined <a href="#sec-1">Vision / goal</a>.
347 </li>
348
349 <li>Collected some <a href="#sec-2-1">ideas</a>.
350 </li>
351
352 <li>Implemented very simple persistent key-value map.
353 <ul class="org-ul">
354 <li>Long term goal is to use it as a backing storage engine and
355 implement more advanced features on top of this.
356 </li>
357 </ul>
358 </li>
359 </ul>
360 </div>
361 </div>
362
363 <div id="outline-container-sec-4" class="outline-2">
364 <h2 id="sec-4"><span class="section-number-2">4</span> See also</h2>
365 <div class="outline-text-2" id="text-4">
366 <p>
367 Interesting or competing projects with good ideas:
368 </p>
369
370 <ul class="org-ul">
371 <li>GRAKN.AI: database in the form of a knowledge graph that uses
372 machine reasoning to simplify data processing challenges for AI
373 applications.
374 <ul class="org-ul">
375 <li><a href="https://grakn.ai/">https://grakn.ai/</a>
376 </li>
377 </ul>
378 </li>
379
380 <li>Gemstone/S based on Smalltalk.
381 <ul class="org-ul">
382 <li><a href="http://esug.org/data/ESUG2015/3%20wednesday/1100-1130%20SQL%20Queries%20on%20Smalltalk%20Objects/SQL%20Queries%20in%20Smalltalk%20(James%20Foster)">http://esug.org/data/ESUG2015/3%20wednesday/1100-1130%20SQL%20Queries%20on%20Smalltalk%20Objects/SQL%20Queries%20in%20Smalltalk%20(James%20Foster)</a>.pdf
383 </li>
384 </ul>
385 </li>
386
387 <li>Magma distributed database in Smalltalk.
388 <ul class="org-ul">
389 <li><a href="http://wiki.squeak.org/squeak/2665">http://wiki.squeak.org/squeak/2665</a>
390 </li>
391 </ul>
392 </li>
393 </ul>
394 </div>
395 </div>
396 </div><div class="col-md-3"><nav id="table-of-contents">
397 <div id="text-table-of-contents" class="bs-docs-sidebar">
398 <ul class="nav">
399 <li><a href="#sec-1">1. Vision / goal</a></li>
400 <li><a href="#sec-2">2. Inspiration</a>
401 <ul class="nav">
402 <li><a href="#sec-2-1">2.1. Brain</a></li>
403 </ul>
404 </li>
405 <li><a href="#sec-3">3. Current status</a></li>
406 <li><a href="#sec-4">4. See also</a></li>
407 </ul>
408 </div>
409 </nav>
410 </div></div></div>
411 <footer id="postamble" class="">
412 <div><p class="author">Author: Svjatoslav Agejenko</p>
413 <p class="date">Created: 2017-07-19 Wed 21:46</p>
414 <p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 25.1.1 (<a href="http://orgmode.org">Org-mode</a> 8.2.10)</p>
415 </div>
416 </footer>
417 </body>
418 </html>