为什么有人需要内存数据库?

时间:2010-06-02 05:04:33

标签: database in-memory-database

我读到一些数据库可以在内存中使用,但无法想到有人想要使用此功能的原因。我总是使用数据库来保存数据和内存缓存以便快速访问。

11 个答案:

答案 0 :(得分:16)

缓存也是一种数据库,就像文件系统一样。 “内存缓存”只是内存数据库的特定应用程序,一些内存数据库专门用作内存缓存。

内存数据库的其他用途已包含在其他答案中,但我也要列举其用途:

  1. 内存缓存。通常会使用专门用于该用途的数据库系统(可能称为“内存缓存”而不是“数据库”)。
  2. 测试与数据库相关的代码。在这种情况下,通常会使用某些通用数据库系统的“内存中”模式,但也可以使用专用的“内存中”数据库来替换其他“磁盘上”数据库,以便加快测试速度。
  3. 复杂的数据操作。内存中的SQL数据库通常以这种方式使用。 SQL是一种很好的数据操作工具,有时在计算最终结果时无需在磁盘上写入数据。
  4. 存储瞬态运行时状态。有些应用程序需要将它们的状态存储在某种数据库中,但不需要在应用程序重启时保留它。想想某种流程管理器 - 它需要跟踪运行的子流程,但只要应用程序和子流程运行,该数据才有效。

答案 1 :(得分:14)

一个常见的用例是运行单元/集成测试。

您并不真正关心在每次测试运行之间保持数据,并且您希望测试尽可能快地运行(以鼓励人们经常进行测试)。托管正在处理的数据库可以让您快速访问数据。

答案 2 :(得分:4)

您的内存缓存是否支持SQL?

您如何将内存数据库视为一个非常聪明的缓存?

这确实留下了如何填充内存数据库以及如何管理更新以及在多个实例中保持一致性的问题。

答案 3 :(得分:3)

如果你不使用像索引这样的技巧,那么在100000个元素中搜索某些内容会很慢。这些技巧已经在数据库引擎中实现(无论是持久性的还是内存式的)。

内存数据库可能提供比您自己在自编结构上快速实现的更有效的搜索功能。

答案 4 :(得分:2)

对于通用(读取端)查询,内存数据库大约比传统RDBMS快至少一个数量级。大多数都是磁盘支持,提供与普通RDBMS完全相同的一致性 - 只捕获整个数据集必须适合RAM。

核心思想是磁盘支持存储具有巨大的随机访问惩罚,这不适用于DRAM。可以使用传统的RDBMS数据缓存方案以随机访问优化的方式索引/组织数据。

答案 5 :(得分:1)

需要实时响应的应用程序希望使用内存数据库,也许应用程序来控制飞机,响应时间至关重要的工厂

答案 6 :(得分:1)

内存数据库在游戏编程中也很有用。您可以将数据存储在内存数据库中,这比永久数据库快得多。

答案 7 :(得分:0)

它们用作高级数据结构来存储,查询和修改运行时数据。

答案 8 :(得分:0)

如果有几个不同的应用程序要访问数据集,您可能需要一个数据库。数据库具有用于访问/修改数据的一致接口,您的哈希表(或您使用的任何其他内容)将不具有该接口。

如果单个程序正在处理数据,那么使用您正在使用的任何语言的数据结构是合理的。

答案 9 :(得分:0)

内存数据库优于执行数据库缓存。 在READ操作方面,数据库缓存的工作方式类似于内存数据库。

另一方面,当涉及到WRITE操作时,与数据库缓存相比,内存数据库更快,数据库缓存中的数据持久存储在磁盘上(这会导致IO开销)。

此外,使用数据库缓存,您可以以缓存未命中结束,但在使用内存数据库时,您永远不会遇到缓存未命中。

答案 10 :(得分:0)

鉴于它们的速度和RAM价格的下降,内存数据库很可能成为未来的主导技术。已经有一些已经开发出复杂的功能,如SQL查询,二级索引和用于处理大于RAM的数据集的引擎。