Main Page: Difference between revisions

From NEOSYS Dev Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 7: Line 7:
For those who know the history of the multivalue database world, Exodus offers the next revolution. First multivalue stopping being an operating system, next the multivalue data store became replaceable with mainstream databases. Now, with Exodus, even the basic language/compiler has been eliminated.
For those who know the history of the multivalue database world, Exodus offers the next revolution. First multivalue stopping being an operating system, next the multivalue data store became replaceable with mainstream databases. Now, with Exodus, even the basic language/compiler has been eliminated.


Exodus faithfully mimics classic multivalue Basic down to the last detail using standard C++ in a kind of dumbed-down way suitable for classic multivalue application programmers. C++’s well developed support for operator overloading and first class objects allows this. Exodus provides an exact one-for-one transliteration for every multivalue basic operator, statement and function using a freely-licenced fairly simple C++ library together with a Postgresql database plugin.
Exodus faithfully mimics classic multivalue Basic behaviour down to the last detail using standard C++ in a kind of dumbed-down way suitable for classic multivalue application programmers. C++’s well developed support for operator overloading and first class objects allows this. Exodus provides an exact one-for-one transliteration for every multivalue basic operator, statement and function using a freely-licenced fairly simple C++ library together with a Postgresql database plugin.


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.
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.

Revision as of 14:37, 30 October 2010

Exodus: The Next Revolution in Multivalue!

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.

Exodus is a unique concept and implementation of multivalue database technology that requires only cross-platform industry-standard tools with no special database, no special language/compiler and no runtime engine at all. Using only industry standard tools eases adoption of Exodus by prospective clients, senior managers and individual programmers.

For those who know the history of the multivalue database world, Exodus offers the next revolution. First multivalue stopping being an operating system, next the multivalue data store became replaceable with mainstream databases. Now, with Exodus, even the basic language/compiler has been eliminated.

Exodus faithfully mimics classic multivalue Basic behaviour down to the last detail using standard C++ in a kind of dumbed-down way suitable for classic multivalue application programmers. C++’s well developed support for operator overloading and first class objects allows this. Exodus provides an exact one-for-one transliteration for every multivalue basic operator, statement and function using a freely-licenced fairly simple C++ library together with a Postgresql database plugin.

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.

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.

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 be classic multivalue dictionary files.

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 like living on in yet another incarnation in Exodus.

LIST/ENGLISH/ACCESS:

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.

SQL:

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.

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 i/o is currently in UTF-8 but this could be easily extended.

Installation:

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+.

Developing in Exodus/IDE:

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++.

Deploying Exodus Applications:

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

Source code:

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".

History:

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.

Roadmap:

Remaining development (none require major work)

  • Sorting and indexing on multivalues
  • Provide UTF8 input and Binary output versions of osbread/write/input/print etc.
  • Complete data visibility via SQL (automatic from multivalue dictionary)
  • Completion of Exodus Programmer's Manual
  • 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

  • Ease to use dictionary editor instead of plain edit?
  • F correlatives
  • Port the Postgres plugin to other databases

Introduction

What is Exodus?

Announcement and discussion of project [[1]]

Downloads

http://code.google.com/p/exodusdb/

Using Exodus

Installing and using Exodus on Windows

Installing & Building all Components for Exodus on Linux

Installing and using Exodus Mac OSX

Google Group/Email List [[2]]

Notes

Keyword changes

How does Exodus handle Unicode

Why is Exodus dependent on Boost and not Qt?

Why does Exodus use autotools and not Cmake?

Not everything is working at the moment see Wishlist

Getting the right to commit to the subversion repository

Documentation how to program in Exodus

Exodus Programmer's Manual

Unorganised notes about programming in Exodus

http://code.google.com/p/exodusdb/w/list

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

Installing & Building all Components for Exodus on Windows

Installing & Building all Components for Exodus on Linux

Installing and Building all Components for Exodus on Mac OSX

Installing and Using Tortoise Subversion or a simple subversion command to checkout is:

"svn co http://svn.neosys.com/svn/trunk exodus"

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.