#1 2011-03-14 06:35:08

Registered: 2010-07-02
Posts: 1,215

Kudos to Arnaud! Using Synopse Sqlite as the document-based storage

Kudos to Arnaud for this excellent multi-tier ORM framework for Sqlite!

I've been searching for a document-based database for a desktop app. As opposed to RDBMS, among other features, a document-based database gives you a great benefit - schema-free. That means you won't need to add/delete/update fields if the structure of the data you persist change;

I checked many of the NoSQL's that has been the buzz in recent years, first, Key/Value-based ones were eliminated, then feature-wise, MongoDB is closest to what I need and it's powerful, but unfortunately, maybe because it's mostly designed for high-volume web servers, on Win32 system it's DB size limit is 2GB; Moreover, it's installation size is too large for my embedded use.

With no result by checking the NOSQL's for my requirement, I then looked at my favorite embedded DBMS - Sqlite, I've used it in other projects with very good result, except that it's a pain when the database schema changes; So Arnaud's Synopse SQLITE framework came to my mind, after looking at the source, demos and forum posts a bit, I found several good things about it:

1 - The ORM framework will solve the pain of database schema changes, at least in my specific scenario, since the major change will be adding fields only;

2 - Its neat multi-tier feature will allow me to implement the addin modules of the app as standalone EXE's; And It will allow the app to extend to C/S architecture very easily - just change from named pipes to tcp/ip;

3 - While there is not a complete manual for the framework, its source is very very well documented, and it includes several very explanatory demo projects, and Arnaud's blog posts and his replies to the forum posts are very detailed and helpful.

4 - Arnaud's very active in the forum, man, this is only an open source project!

5 - There are many gems hidden inside this open source framework, for example:
     a - A JSON parser which can serialize/deserialize a TPersistent-derived object very easily;
     b - Some encryption/hassing classes including AES, MD5, SHA1;
     c - A base64 encoding/decoding classe;
     d - A unit that implements HTTP/1.1 client and server protocol;
     e - ZLib compression, plus a zip writer?
     f - A PDF renderer;
     g - A GDI plus interface;
     h - A Windows service management class for functions including, but not limited to stopping, starting a Windows service;

Thank you Arnaud! You are a hero and genius (ifyou check other open source projects found in this site, you'll have to agree with me on this!)!

Delphi XE4 Pro on Windows 7 64bit.
Lazarus trunk built with fpcupdelux on Windows with cross-compile for Linux 64bit.


#2 2011-03-14 16:16:26

From: France
Registered: 2010-06-21
Posts: 14,206

Re: Kudos to Arnaud! Using Synopse Sqlite as the document-based storage


I'm no hero, just trying to make software work..
And there is still room for improvement.
The mORMot (DB-agnostic ORM) framework I want to make is on its road too. But seems to be an even bigger project.
So I'm going forward step by step.

And thanks you all for your feedback and interest!

I got many ideas, and even code modifications from you all.
Open Source and Delphi both rock!


Board footer

Powered by FluxBB