Alternative to the TimesTen in memory database

Generally, in this field people also look at kdb from Kx Systems. I think both these systems really had they hay-day in the early 2000's. I would see if a tuned MySQL with a solid state RAID array would give you the performance you need.

BTW, I once wrote a time series database which outperformed both TimesTen and Kdb. It supported a SQL-92 syntax. The key to the performance was binding the schema to C++ template based classes, and using memory mapped files. Allowing for on-the-run schema changes is quite expensive, and defining the schema at compile time, data lookups could be retrieved in just a few assembly instructions.


Above question was asked (and answered) way back in 2009. However, the question is still relevant and we can give a 2nd look.

I can suggest following alternatives to TimesTen:

  • SQLite
    • Link: http://www.sqlite.org/inmemorydb.html
    • Advantages: Small footprint, It's RDBMS (no application rewrite required)
    • Disadvantages: No row-level locking
  • H2
    • Link: http://www.h2database.com/html/features.html#in_memory_databases
    • Advantages: It's RDBMS (no application rewrite required), row-level locking
  • HyperSQL
    • Link: http://hsqldb.org/
    • Advantages & Disadvantages: Very similar to H2 (above).
  • Redis
    • Link: http://redis.io
    • Advantages: Blazingly fast with native support for data structures like list, hash, set, sorted set etc
    • Disadvantages: Not an RDBMS (you may have to rewrite your application)

All of the above can run in-memory. Features-wise you might find things missing as compared to TimesTen. But they are certainly worth a look.


A popular in-memory database system is McObject's eXtremeDB, see

http://www.mcobject.com/extremedbfamily.shtml

There is also a good white paper, offered for download from the home page of McObject's Web site, called, "In-Memory Database Systems: Myths and Facts". It clarifies some questions that arise when discussing the technology, such as, "how is an IMDS different from a 'traditional' database running on a RAM disk?"