可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I just found "Has anyone published a
detailed comparison between different
in-memory RDBMSs?" that is related
to my question.
TimesTen (see also) is a In-Memory Database from oracle.
It has a lot going for it including.
- Fast, consistent response time
- High transaction throughput
- Standard SQL, no application rewrite
- Persistent and recoverable
- High availability and no data loss
However it is priced out of the reach of most people ($41,500.00 / Processor).
So what alternatives are there, and what are there pros and cons.
(I am using .NET if it changes your answer)
回答1:
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?"
回答2:
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.
回答3:
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
- 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.
回答4:
Another for the list: open-source Tarantool is a persistent in-memory option that like TimesTen supports ACID transactions and SQL. Unlike TimesTen, though, it can be auto-sharded and also features a full Lua application server for stored procedures.
回答5:
I have recently done a comparison betweem Oracle TimesTen and Sybase ASE IMDB.
The article is in two parts and available from the following links.
http://searchoracle.techtarget.com/tip/In-memory-databases-Oracle-TimesTen-vs-Sybase-ASE
http://searchoracle.techtarget.com/tip/In-memory-databases-Oracle-TimesTen-vs-Sybase-ASE-part-2
回答6:
I asked this question a LONG time ago, these days Microsoft SQL Server have "In-Memory OLTP" that is a memory-optimized database engine integrated into the SQL Server engine. It is not cheap, but seems to be very fast for some workloads.
回答7:
An alternative may be solidDB, a comparison between the two may be found here: TimesTen and solidDB comparison
回答8:
Add to the list of In-Mem databases.
Apache Derby
HyperSQL or HSQLDB.
H2 and HyperSQL have compatibility mode as well to support schema of other databases, which is a very nice feature.