Advantages & Disadvantages of an In-Memory Database

Advantages & Disadvantages of an In-Memory Database

I would like to discuss the advantages
together with the disadvantages of what we call “in memory databases”. First
of all, what is the difference between an in-memory
database and simply storing data in shared memory segments? Traditionally, databases can be
characterized by the four attributes commonly referred to by the
acronym ACID: Atomicity, Consistency, Isolation and Durability. As
soon as you stop persisting a database you lose
durability. So this is what is lost with an in-memory database. Aside from methods of copying database contents to another durable location an in-memory database can be subject to data loss if something stops working. The remaining attributes; atomicity, consistency and isolation are what differentiate an in memory database from simple data held in some shared memory. Atomicity is the word used to describe transactional behavior where all changes are committed to the database as an all or nothing operation. Isolation is the word used to describe what transactional changes other processes see. They can never be
allowed to see partial transactions. In its most basic form, shared memory does not enforce atomicity or isolation. That is fine as long as there is only one process using the data, but that defeats the purpose for
shared-memory. Database consistency means that structural rules and relationships are maintained for all users. Enforcement of database consistency requires sharing common code and data definitions. Of course, this can be done with shared memory, but a database system will have code and
data definition built-in and ready to use. So, regardless of whether your data is durable or in memory, you still need database functionality if your data is shared or complicated,
and that is not easy to do yourself. The main reason to keep a database
in memory is performance. Reading and writing data
that is purely in memory is faster than data stored on disk or on
a flash drive. The corresponding disadvantage is that all data must fit in memory. This is increasingly affordable, but memory sizes are still multi-gigabyte, while disk size can be multi-terabyte. It is necessary to buy adequate memory or limit the size the
database. How does Raima implement an in memory database system in RDM? We allow you to declare an entire database or a selection of tables in the database as in memory. That’s all you have to do. We implement it through our transactional file server and runtime library. The transactional file server is an
independent process the controls the database files and
maintains atomicity and isolation for all users on the same
computer or others. The runtime library is linked
into the application code. It writes and reads database pages to
and from the TFS. The key is, when a database or a portion of a database is declared as in-memory, only the RDM TFS and runtime behave any differently. Your
application code can remain exactly the same. RDM has several options
for in-memory databases. A persistent in memory database is
loaded from disk image when it is opened and changes are automatically saved back
when closed. A volatile in-memory database is empty when it is open
and all data is discarded when it is closed. The third type is a read on open which automatically reloads data from a disk image when opened, but changes are only written on demand.
So, to summarize, the advantages of using
RDM as an in-memory database, is that it provides transactional,
multi-user safety where shared memory solution requires a
lot of work to do this. It also provides greater performance than durable solutions. Disadvantages; potential loss of data and
limit on database size. When this is fine, you should certainly
use RDM’s in memory solution.

Danny Hutson

3 thoughts on “Advantages & Disadvantages of an In-Memory Database

Leave a Reply

Your email address will not be published. Required fields are marked *