As we already notified in this blog, Embarcadero has been finally bought by IDERA. Delphi users received a letter from Randy Jacops, IDERA CEO. Written in my mother language, in perfect French. Nice! The letter states that they have 20,000 customers... It sounds more realistic than the numbers […]
Tag - NoSQL
2015-08-31
Delphi 10 = DX Seattle is out, mORMot supports it
2015-08-31. Pascal Programming
We expected Delphi XE9, and now we have Rad Studio 10 Seattle, with Delphi renamed as Delphi 10 Seattle, or simply DX. No big news for the Delphi compiler itself (we are still waiting for Linux server support), but a lot of FireMonkey updates, Windows 10 compatibility enhancements, enhancements to […]
2015-08-23
"SQL and NoSQL", not "SQL vs NoSQL"
2015-08-23. Open Source › mORMot Framework
You know certainly that our mORMot Open Source framework is an ORM,
i.e. mapping objects to a relational / SQL database (Object
Relational Mapping).
You may have followed also that it is able to connect to a
NoSQL database, like MongoDB, and
that the objects are then mapped via an ODM (Object
Document Mapping) - the original SQL SELECT are even
translated on the fly to MongoDB queries.
But thanks to mORMot, it is not "SQL vs NoSQL" - but
"SQL and NoSQL".
You are not required to make an exclusive choice.
You can share best of both worlds, depending on your application needs.
In fact, the framework is able to add NoSQL features to a regular relational / SQL database, by storing JSON documents in TEXT columns.
In your end-user code, you just define a variant
field in
the ORM, and store a
TDocVariant document within.
We also added some dedicated functions at SQL level, so that
SQLite3 could be used as embedded fast engine, and provide
advanced WHERE clauses on this JSON content.
2014-11-28
ODM magic: complex queries over NoSQL / MongoDB
2014-11-28. Open Source › mORMot Framework
You know that our mORMot is able to access directly any MongoDB database engine, allowing its ORM to become an ODM, and using NoSQL instead of SQL for the query languages.
But at mORMot level, you could share the same code between your
RDBMS and NoSQL databases.
The ORM/ODM is able to do all the conversions by itself!
Since we have just
improved this feature, it is time to enlighten its current status.
2014-05-09
BREAKING CHANGE: TSQLRestServerStatic* classes are now renamed as TSQLRestStorage*
2014-05-09. Open Source › mORMot Framework

From the beginning, server-side storage tables which were not store in
a SQLite3 database were implemented via some classes
inheriting from TSQLRestServerStatic.
, which did not make much sense (but was
made for laziness years ago, if I remember well).
This TSQLRestServerStatic
was inheriting
from TSQLRestServer
Now, a new TSQLRestStorage
class, directly inheriting from
TSQLRest
, is used for per-table storage.
This huge code
refactoring results in a much cleaner design, and will enhance code
maintainability.
Documentation has been updated to reflect the changes.
Note that this won't change anything when using the framework (but the new class names): it is an implementation detail, which had to be fixed.
2014-05-07
MongoDB + mORMot benchmark
2014-05-07. Open Source › mORMot Framework
Here are some benchmark charts about MongoDB integration in mORMot's ORM.
MongoDB appears as a serious competitor to SQL databases, with the potential benefit of horizontal scaling and installation/administration ease - performance is very high, and its document-based storage fits perfectly with mORMot's advanced ORM features like Shared nothing architecture (or sharding).
MongoDB + mORMot ORM = ODM
2014-05-07. Open Source › mORMot Framework
MongoDB (from "humongous") is
a cross-platform document-oriented database system, and certainly the best
known NoSQL database.
According to http://db-engines.com in April
2014, MongoDB is in 5th place of the most popular types of database
management systems, and first place for NoSQL database management
systems.
Our mORMot gives premium access to this database, featuring full
NoSQL and Object-Document Mapping (ODM) abilities to the
framework.
Integration is made at two levels:
- Direct low-level access to the MongoDB server, in the
SynMongoDB.pas
unit; - Close integration with our ORM (which becomes defacto an ODM), in
the
mORMotMongoDB.pas
unit.
MongoDB eschews the traditional table-based relational database structure in favor of JSON-like documents with dynamic schemas (MongoDB calls the format BSON), which matches perfectly mORMot's RESTful approach.
This second article will focus on integration of MongoDB with our ORM.
Direct MongoDB database access
2014-05-07. Open Source › mORMot Framework
MongoDB (from "humongous") is
a cross-platform document-oriented database system, and certainly the best
known NoSQL database.
According to http://db-engines.com in April
2014, MongoDB is in 5th place of the most popular types of database
management systems, and first place for NoSQL database management
systems.
Our mORMot framework gives premium access to this database,
featuring full NoSQL and Object-Document Mapping (ODM) abilities to
the framework.
Integration is made at two levels:
- Direct low-level access to the MongoDB server, in the
SynMongoDB.pas
unit; - Close integration with our ORM (which becomes defacto an ODM), in
the
mORMotMongoDB.pas
unit.
MongoDB eschews the traditional table-based relational database structure in favor of JSON-like documents with dynamic schemas (MongoDB calls the format BSON), which matches perfectly mORMot's RESTful approach.
In this first article, we will detail direct low-level access to the
MongoDB server, via the SynMongoDB.pas
unit.
2014-04-18
Introducing mORMot's architecture and design principles
2014-04-18. Open Source › mORMot Framework
We have just released a set of slides introducing ORM, SOA, REST, JSON, MVC, MVVM, SOLID, Mocks/Stubs, Domain-Driven Design concepts with Delphi, and showing some sample code using our Open Source mORMot framework. You can follow the public link on Google Drive! This is a great opportunity to […]
2014-02-28
Are NoSQL databases ACID?
2014-02-28. Open Source › mORMot Framework
One of the main features you may miss when discovering NoSQL ("Not-Only SQL"?) databases, coming from a RDBMS background, is ACID.
ACID (Atomicity, Consistency, Isolation, Durability) is a set of properties that guarantee that database transactions are processed reliably. In the context of databases, a single logical operation on the data is called a transaction. For example, a transfer of funds from one bank account to another, even involving multiple changes such as debiting one account and crediting another, is a single transaction. (Wikipedia)
But are there any ACID NoSQL database?
Please ensure you read the Martin Fowler
introduction about NoSQL databases.
And the corresponding
video.
First of all, we can distinguish two types of NoSQL databases:
- Aggregate-oriented databases;
- Graph-oriented databases (e.g. Neo4J).
By design, most Graph-oriented databases are ACID!
This is a first good point.
Then, what about the other type?
In Aggregate-oriented databases, we can identify three sub-types:
- Document-based NoSQL databases (e.g. MongoDB, CouchDB);
- Key/Value NoSQL databases (e.g. Redis);
- Column family NoSQL databases (e.g. Cassandra).
It may be schema-less, blob-stored, column-driven, but it is always some set of values bound together to be persisted.
This set of values define a particular state of one entity, in a given model.
Which we may call Aggregate.