Main Page: Difference between revisions

From NEOSYS Dev Wiki
Jump to navigationJump to search
 
(77 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Motivation:
[irc://irc.freenode.net/exodusdb Help/IRC] - [http://groups.google.com/group/exodus-users/topics?hl=en Forum] - [[Manual]] - [[Special:RecentChanges|What's New]] - [http://code.google.com/p/exodusdb/downloads/list?q=label:Featured Download] <br>
Install: [[Linux]], [[Windows]], [[Mac]] <br>
Build: [[LinuxBuild|Linux]], [[Building on Windows|Windows]], [[Building on Mac|Mac]],
[http://code.google.com/p/exodusdb/source/browse/#svn/trunk Source],
[http://code.google.com/p/exodusdb/source/checkout Checkout], [[Doxygen]]


Many people have dreamed of migrating their classic multivalue database applications and/or skills into industry standard programming environments. However, until now it has been impossible. Migration has always meant that applications and skills have had to be redeveloped from scratch dropping most, if not all, principles of multivalue databases.
News: Exodus now has alpha version bindings for nearly all major application languages.  Specifically php, perl, python, java and C#. Server-side Javascript may be added later. This means that Exodus no longer requires a C++ compiler. Functions are identical on all platforms but numerical and logical operators are not.


Exodus is a unique concept and implementation of multivalue database technology that requires only industry standard tools with no special database, language or compiler and no runtime engine. Using only industry standard tools should make adoption of Exodus by prospective clients, senior managers and individual programmers a relatively minor issue.
=== Exodus: The Next Revolution in Multivalue? ===


For those who know the history of the multivalue database concept, Exodus offers the next step of the evolution of multivalue applications. First the operating system was lost, next in some cases, the data store was replaced by mainstream databases. Now, with Exodus, even the compiler has been eliminated. Like the Cheshire cat in Alice in Wonderland, all that is left is the grin.
Many people have dreamed of migrating their classic multivalue database applications and/or skills into mainstream programming environments. Until now however, it has been impossible. Where migration has actually been done, it has always meant that applications and skills have had to be redeveloped. The usual result is that multivalue applications are simply kept in operation and interfaces added to other systems. This isn't migration though, it is co-existence.


Exodus does this by providing an exact one-for-one transliteration for every multivalue basic operator, statement and function using a C++ library and a Postgresql database plugin. Exodus exploits the unique characteristics of C++ to behave and feel like multivalue Basic. Only C++'s well developed support for operator overloading and first class objects allow this.
Exodus is freely licenced implementation of a unique concept that completely reincarnates multivalue database technology in a mainstream environment with:


To enable a smooth migration of an application, all the underlying principles of multivalue databases must be retained and the code must be as readable and as writable as is was before. This is what Exodus provides. A change of syntax is unavoidable but does not take long to learn and large bodies of existing code can be converted reliably and routinely - by junior staff if necessary.
=== FREE-DOM! ===


It is not necessary to "learn C++" to use Exodus. Only a basic knowledge of the near universal C/C++/Java/Javascript/PHP syntax is required. The move into the new syntax provides many practical and pleasurable ways to write code. Exodus code can be made "pure" by not including C++ libraries ... or seamlessly integrated with any library required.
*no proprietary/legacy database
*no proprietary/legacy language/compiler
*no proprietary/legacy runtime engine


Exodus uses PostgreSQL for all data storage while making it appear just like a completely traditional multivalue database - and without requiring any knowledge of SQL. All data definition is done in classic multivalue dictionary files.
For those who know the history of the multivalue database world, Exodus promises its next revolution. First, multivalue stopped providing an operating system, next its data store became replaceable with mainstream databases. Now, with Exodus, even the Basic language/compiler has been eliminated.


Exodus has a tiny footprint, is thread-safe and can produce standalone programs or be linked into utilities, libraries or embedded projects - with or without database functionality. The possibilities are very broad.
Using only widely accepted tools should ease adoption of Exodus (and therefore multivalue based applications) by the vast majority of companies and individuals who are not familiar with multivalue technology and are more comfortable investing in mainstream products.


LIST/ENGLISH/ACCESS:
Exodus faithfully mimics classic multivalue Basic behaviour, down to the last detail, by implementing a simple and practical kind of "Javascript version of DataBasic" that can be compiled by a standard C++ compiler. Exodus provides an exact one-for-one translation for every classic multivalue Basic operator, statement and function. It does this by providing C++ library and a Postgresql database plugin.


Exodus supports various dictionary formats, all the common iconv/oconv functions and has a complete LIST/ENGLISH/ACCESS replacement that can output either text or html.
=== Universal Programming Style ===


SQL:
Only a basic knowledge of the near universal "curly bracket syntax" used by C/C++/C#/Java/Javascript/PHP is required to program in Exodus. The move into the new syntax provides many practical and pleasurable ways to write code. Exodus code also be seamlessly integrated with C/C++ by including their libraries.


In the very near future all multivalue data will also be readable via Postgresql's standard SQL interfaces. SQL views will be generated whenever dictionary files are updated.
=== Sematic Cloning ===


Unicode:
To enable a smooth migration of an application, all the underlying principles of multivalue databases must be retained and the code must be as readable and as writable as is was before. This is what Exodus provides. A change of syntax is unavoidable since Exodus uses a mainstream compiler, but it does not take long to learn and large bodies of existing code can be converted reliably and routinely.


All Exodus strings are Unicode and ordering is done using operating system collators. Internally, Exodus is UCS-2 on Windows 32bit and UTF-32 on Unix/Linux/Mac/Win64. All i/o is currently in UTF-8 but this could be easily extended.
Exodus uses PostgreSQL for all data storage while making it appear just like a completely traditional multivalue database - and without requiring any knowledge of SQL. All data definition is done in what appear to programmer/dba to be classic multivalue dictionary files.


Installation:
=== List/English/Access Clone ===


Exodus has a binary installer for Windows and OSX. Unix/Linux/Mac can be installed using configure/make/make install.
Exodus supports various dictionary formats, the commonest iconv/oconv functions and has a complete LIST/ENGLISH/ACCESS replacement that can output either text or html.


Exodus has no dependencies other than the obvious. If you want to write programs in Exodus, you need a C++ compiler. If you want to access or update multivalue data, you need Postgresql 8.1+.
=== SQL Perspective ===


Developing in Exodus/IDE:
In the very near future all multivalue data will also be *readable* via Postgresql's standard SQL interfaces. This is without any additional work on behalf of the programmer/dba beyond the maintenance of classic multivalue dictionary files.


To ease the life of Exodus programmers on all platforms, Exodus provides edic and other commands to edit/compile/catalog programs from any standard operating system command console. edic wraps the ubiquitous nano editor with color coding of exodus/c++ syntax and "jump to first error" after compilation errors. You can configure your own editor where desired. The Windows installer includes nano.
=== Unicode ===


For traditional multivalue programmers, Exodus remains in the familiar world of "compiling" source code and executing "object code". Modern C++ compilers and debuggers are very sophisticated these days. When compiled in the default debug mode, Exodus provides a source level backtrace for run-time errors like "variable not assigned", "non-numeric data" etc. All exodus programs can be interrupted/resumed.
All Exodus strings are Unicode and ordering is done using operating system collators. Internally, Exodus is UCS-2 on Windows 32bit and UTF-32 on Unix/Linux/Mac/Win64. All file i/o is locale/codepage based or UTF-8.


The massive range of commercial and open source tools is available to assist development in C++.
=== Portability ===


Deploying Exodus Applications:
Exodus has a binary installer for Windows and OSX. Unix/Linux/Mac can be installed using configure/make/make install.


In the standards-based world that Exodus inhabits, there is a huge variety of tools to deploy applications.
Exodus has no dependencies other than the obvious. If you want to write programs in Exodus, you need a C++ compiler. If you want to access or update multivalue data, you need Postgresql 8.1+, 9.0+.


Source code:
Exodus's command line utilities are all written in Exodus/C++ providing both portability and samples of real programming using Exodus.


If you want to build Exodus from source, you need Boost binaries 1.35 or later. Portability to other platforms is forecast to be high. The code base is quite small and comprehensible being mostly implementation of a single class called "var".
If you want to build Exodus from source, you need Boost libraries. Portability to other platforms is forecast to be high. The code base is quite small and comprehensible being mostly implementation of a single class called "var".


History:
=== Cross Platform Development ===


Exodus has been developed to date by NEOSYS to serve as the new back-end platform for the next generation of their vertical market package. It is nominally 95% complete and the input of multivalue professionals is sought before the API is frozen and put into production.
To ease the life of Exodus programmers on all platforms, Exodus provides edic and other commands to edit/compile/catalog programs from any standard operating system command console. edic wraps the ubiquitous nano editor with color coding of exodus/c++ syntax and "jump to first error" after compilation errors. You can configure your own editor where desired. The Windows installer includes nano.


Roadmap:
For traditional multivalue programmers, Exodus remains in the familiar world of "compiling" source code and executing "object code".  Modern C++ compilers and debuggers are very sophisticated these days. When compiled in the default debug mode, Exodus provides a source level backtrace for run-time errors like "variable not assigned", "non-numeric data" etc. All exodus programs can be interrupted/resumed.


Remaining development (none require major work)
The massive range of commercial and open source tools is available to assist development in C++.
* Sorting and indexing on multivalues
* Mv programmer-friendly use of C++ classes
* Provide UTF8 input and Binary output versions of osbread/write/input/print etc.
* Transparent SQL visibility (Views from multivalue dictionary)
* Documentation
* Binary build for main Linux distros
* Move everything onto sourceforge
* Move unit tests into subversion
* mv programmer friendly db management utils file/account-create/save/restore/


Possible future development
=== Deployment of Applications ===
* Ease to use dictionary editor instead of plain edit?
* F correlatives
* Byte level functions
* Port the Postgres plugin to other databases


=== Introduction ===
In the standards-based world that Exodus inhabits, there is a huge variety of tools to deploy applications.


[[What is Exodus]]?
=== Technical Agility ===


Announcement and discussion of project [[http://groups.google.com/group/comp.databases.pick/browse_thread/thread/dff87b745d02b79e/eaea73f5be63c249#eaea73f5be63c249]]
Exodus has a tiny footprint, is thread-safe and can produce standalone programs or be linked into utilities, libraries or embedded projects - with or without database functionality. The possibilities are very broad. The Exodus library can be maintained by any average C++ programmer, there is nothing particularly difficult about its implementation. The best things are always simple, like the original Pick database - which looks like living on in yet another incarnation in Exodus.


=== Downloads ===
=== Genesis - Looking Back ===


http://code.google.com/p/exodusdb/
Exodus has been developed to date by NEOSYS to serve as the new back-end platform for the next generation of their vertical market package. It is nominally 90% complete and the input of multivalue professionals is sought before the API is frozen and put into production.


=== Using Exodus ===
=== Roadmap - Looking Forward ===


[[Installing and using Exodus on Windows]]
Remaining development


[[Installing and using Exodus Mac OSX]]
* Completion of [[Exodus Programmer's Manual]]
* mv-programmer-friendly way of doing labelled common
* Sorting and indexing on multivalues
* oconv/iconv of dates, time and numbers in any locale


Google Group/Email List [[http://groups.google.co.uk/group/exodus-users]]
Possible future development


=== Building Exodus ===
* Complete data visibility via SQL (automatic from multivalue dictionary)
* Binary build for main Linux distros
* Move everything onto sourceforge
* Move unit tests into subversion
* mv programmer friendly db management utils file/account-create/save/restore/
* Ease to use dictionary editor instead of plain edit?
* F correlatives
* Port the Postgres plugin to other databases


[[Installing & Building all Components for Exodus on Windows]]
=== Random Notes ===


[[Installing & Building all Components for Exodus on Linux]]
[[What is Exodus]]?


[[Installing and Building all Components for Exodus on Mac OSX]]
Announcement and discussion of project [[http://groups.google.com/group/comp.databases.pick/browse_thread/thread/dff87b745d02b79e/eaea73f5be63c249#eaea73f5be63c249]]
 
[[Installing and Using Tortoise Subversion]] or a simple subversion command to checkout is:<pre>"svn co http://svn.neosys.com/svn/trunk exodus"</pre>
 
=== Notes ===


[[Keyword changes]]
[[Keyword changes]]
Line 112: Line 111:
[[Why does Exodus use autotools and not Cmake?]]
[[Why does Exodus use autotools and not Cmake?]]


Not everything is working at the moment see [[Wishlist]]
[[Wishlist]]


[[Getting the right to commit to the subversion repository]]
[[Getting the right to commit to the subversion repository]]
== Documentation how to program in Exodus ==
No programming manual yet but there is a list of functions in wiki at
http://code.google.com/p/exodusdb


[[Unorganised notes about programming in Exodus]]
[[Unorganised notes about programming in Exodus]]


[[Programming in Exodus]] very basic at the moment
[http://www.theregister.co.uk/2011/05/19/cloud_storage/|A Comparison of "Key/Value" databases v. SQL databases]
 
== Source code and Exodus development environment ==
 
http://code.google.com/p/exodusdb has latest full source code and tools to build exodus from scratch on all supported platforms.
 
The following Doxygen is not quite up to date but is still informative.
 
http://devwiki.neosys.com/dox


include\exodusfuncs.h lists the functions that simulates pickish syntax as close as can be achieved. The functionality however should be identical.
include\exodusfuncs.h lists the functions that simulates pickish syntax as close as can be achieved. The functionality however should be identical.


include\exodusmacros.h lists a few keywords to simplify programming for application programmers not interested in the raw power of c++.
include\exodusmacros.h lists a few keywords to simplify programming for application programmers not interested in programming in a more OO style.


include\mv.h lists the massive var class definition that defines how to write pick in oo object.method() style syntax.
include\mv.h lists the massive var class definition that defines how to write pick in oo object.method() style syntax.

Latest revision as of 12:14, 28 December 2021

Help/IRC - Forum - Manual - What's New - Download
Install: Linux, Windows, Mac
Build: Linux, Windows, Mac, Source, Checkout, Doxygen

News: Exodus now has alpha version bindings for nearly all major application languages. Specifically php, perl, python, java and C#. Server-side Javascript may be added later. This means that Exodus no longer requires a C++ compiler. Functions are identical on all platforms but numerical and logical operators are not.

Exodus: The Next Revolution in Multivalue?

Many people have dreamed of migrating their classic multivalue database applications and/or skills into mainstream programming environments. Until now however, it has been impossible. Where migration has actually been done, it has always meant that applications and skills have had to be redeveloped. The usual result is that multivalue applications are simply kept in operation and interfaces added to other systems. This isn't migration though, it is co-existence.

Exodus is freely licenced implementation of a unique concept that completely reincarnates multivalue database technology in a mainstream environment with:

FREE-DOM!

  • no proprietary/legacy database
  • no proprietary/legacy language/compiler
  • no proprietary/legacy runtime engine

For those who know the history of the multivalue database world, Exodus promises its next revolution. First, multivalue stopped providing an operating system, next its data store became replaceable with mainstream databases. Now, with Exodus, even the Basic language/compiler has been eliminated.

Using only widely accepted tools should ease adoption of Exodus (and therefore multivalue based applications) by the vast majority of companies and individuals who are not familiar with multivalue technology and are more comfortable investing in mainstream products.

Exodus faithfully mimics classic multivalue Basic behaviour, down to the last detail, by implementing a simple and practical kind of "Javascript version of DataBasic" that can be compiled by a standard C++ compiler. Exodus provides an exact one-for-one translation for every classic multivalue Basic operator, statement and function. It does this by providing C++ library and a Postgresql database plugin.

Universal Programming Style

Only a basic knowledge of the near universal "curly bracket syntax" used by C/C++/C#/Java/Javascript/PHP is required to program in Exodus. The move into the new syntax provides many practical and pleasurable ways to write code. Exodus code also be seamlessly integrated with C/C++ by including their libraries.

Sematic Cloning

To enable a smooth migration of an application, all the underlying principles of multivalue databases must be retained and the code must be as readable and as writable as is was before. This is what Exodus provides. A change of syntax is unavoidable since Exodus uses a mainstream compiler, but it does not take long to learn and large bodies of existing code can be converted reliably and routinely.

Exodus uses PostgreSQL for all data storage while making it appear just like a completely traditional multivalue database - and without requiring any knowledge of SQL. All data definition is done in what appear to programmer/dba to be classic multivalue dictionary files.

List/English/Access Clone

Exodus supports various dictionary formats, the commonest iconv/oconv functions and has a complete LIST/ENGLISH/ACCESS replacement that can output either text or html.

SQL Perspective

In the very near future all multivalue data will also be *readable* via Postgresql's standard SQL interfaces. This is without any additional work on behalf of the programmer/dba beyond the maintenance of classic multivalue dictionary files.

Unicode

All Exodus strings are Unicode and ordering is done using operating system collators. Internally, Exodus is UCS-2 on Windows 32bit and UTF-32 on Unix/Linux/Mac/Win64. All file i/o is locale/codepage based or UTF-8.

Portability

Exodus has a binary installer for Windows and OSX. Unix/Linux/Mac can be installed using configure/make/make install.

Exodus has no dependencies other than the obvious. If you want to write programs in Exodus, you need a C++ compiler. If you want to access or update multivalue data, you need Postgresql 8.1+, 9.0+.

Exodus's command line utilities are all written in Exodus/C++ providing both portability and samples of real programming using Exodus.

If you want to build Exodus from source, you need Boost libraries. Portability to other platforms is forecast to be high. The code base is quite small and comprehensible being mostly implementation of a single class called "var".

Cross Platform Development

To ease the life of Exodus programmers on all platforms, Exodus provides edic and other commands to edit/compile/catalog programs from any standard operating system command console. edic wraps the ubiquitous nano editor with color coding of exodus/c++ syntax and "jump to first error" after compilation errors. You can configure your own editor where desired. The Windows installer includes nano.

For traditional multivalue programmers, Exodus remains in the familiar world of "compiling" source code and executing "object code". Modern C++ compilers and debuggers are very sophisticated these days. When compiled in the default debug mode, Exodus provides a source level backtrace for run-time errors like "variable not assigned", "non-numeric data" etc. All exodus programs can be interrupted/resumed.

The massive range of commercial and open source tools is available to assist development in C++.

Deployment of Applications

In the standards-based world that Exodus inhabits, there is a huge variety of tools to deploy applications.

Technical Agility

Exodus has a tiny footprint, is thread-safe and can produce standalone programs or be linked into utilities, libraries or embedded projects - with or without database functionality. The possibilities are very broad. The Exodus library can be maintained by any average C++ programmer, there is nothing particularly difficult about its implementation. The best things are always simple, like the original Pick database - which looks like living on in yet another incarnation in Exodus.

Genesis - Looking Back

Exodus has been developed to date by NEOSYS to serve as the new back-end platform for the next generation of their vertical market package. It is nominally 90% complete and the input of multivalue professionals is sought before the API is frozen and put into production.

Roadmap - Looking Forward

Remaining development

  • Completion of Exodus Programmer's Manual
  • mv-programmer-friendly way of doing labelled common
  • Sorting and indexing on multivalues
  • oconv/iconv of dates, time and numbers in any locale

Possible future development

  • Complete data visibility via SQL (automatic from multivalue dictionary)
  • Binary build for main Linux distros
  • Move everything onto sourceforge
  • Move unit tests into subversion
  • mv programmer friendly db management utils file/account-create/save/restore/
  • Ease to use dictionary editor instead of plain edit?
  • F correlatives
  • Port the Postgres plugin to other databases

Random Notes

What is Exodus?

Announcement and discussion of project [[1]]

Keyword changes

How does Exodus handle Unicode

Why is Exodus dependent on Boost and not Qt?

Why does Exodus use autotools and not Cmake?

Wishlist

Getting the right to commit to the subversion repository

Unorganised notes about programming in Exodus

Comparison of "Key/Value" databases v. SQL databases

include\exodusfuncs.h lists the functions that simulates pickish syntax as close as can be achieved. The functionality however should be identical.

include\exodusmacros.h lists a few keywords to simplify programming for application programmers not interested in programming in a more OO style.

include\mv.h lists the massive var class definition that defines how to write pick in oo object.method() style syntax.