内存中的关系数据库?

时间:2011-03-16 17:57:53

标签: sql redis relational in-memory

我在Redis上有一个简单的问题。如果它的性能关键是它在内存中,乳清不能在常规SQL数据库上完成吗?

6 个答案:

答案 0 :(得分:8)

任何DBMS都可以“在内存中”运行。考虑使用ramdisk。但是,大多数DBMS(具有SQL的那些)未设计完全在内存中运行并且很多努力最小化磁盘IO和分页:DBMS非常难以保持“相关数据”很热(在内存和缓存中) - IO缓慢,缓慢。

这是因为数据库数据通常[和历史上] 显着大于主存储器。那个和主内存是不稳定的:-) [ACID DBMS做了许多工作,预先写入日志 - 到非易失性存储 - 以及其他技术,以确保数据永远不会被破坏,即使在意外关闭的情况下。 ]

某些数据库(如SQLite)对磁盘和内存存储使用相同的格式,即使它们明确支持内存存储也是如此。支持其他[内存中]后端和内存使用调整因提供商而异。

快乐的编码。

答案 1 :(得分:5)

您可能对VoltDB

感兴趣

答案 2 :(得分:2)

关键不仅在于内存,而且还具有比SQL DB更简单的操作。 Redis使用哈希表和其他优化的数据结构进行简单的操作,如GET,SET(等等)。

SQL数据库通常需要更长的时间来计算,但是它们更灵活,并且在大多数情况下更强大(就什么类型的查询而言)。你肯定无法在Redis中运行JOIN查询,例如

答案 3 :(得分:2)

您可能对TimesTen(现在是Oracle)感兴趣。

11g SQL Oracle显着改善,但仍不如{{1}}那么强大。

答案 4 :(得分:1)

您可以使用某些SQL数据库管理系统本机执行此操作。但是存在风险。

例如,如果服务器出现故障,您就会丢失数据。我不认为你可以得到符合ACID的交易;必须将任何日志文件写入磁盘才能在服务器发生故障时继续运行。 (我想,内存中的SQL dbms仍然可以将日志文件写入磁盘,但我自己从未遇到过这种情况。不是说我看起来太多了。)

答案 5 :(得分:1)

在RAM中的DB:Traditional databases will eventually wind up in RAM

  
    

传统的数据库数据 - 人类交易活动的记录[...] - 不会像摩尔定律那样快速增长,使计算机芯片更便宜

         

这一点有一个直截了当的推论,即:

         

将传统数据库数据完全放入RAM中会变得更加实惠。

  
相关问题