我在Redis上有一个简单的问题。如果它的性能关键是它在内存中,乳清不能在常规SQL数据库上完成吗?
答案 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中会变得更加实惠。