我只是认为现在是 共有足够的内存数据库服务器上到高速缓存完整的数据库 为什么是专业 存储器数据库 (e。克 TimesTen, 也可参看 维基百科页)是所有的愤怒几年前,不正使用更多吗?

它似乎是随着时间去上,没有基于磁盘数据库正在使用较少,e。g大多数应用程序现在是建立在传统的合理数据库。我会预期相反,作为RAM越来越接近于免费了很多服务器。

我要求这一点,因为我刚刚读了关于这个堆栈-溢出的架构和网页说

这是重要的,因为栈 溢的数据库几乎是 完全在RAM和联接仍然 确切太高的成本。

但我不认为这将是一个问题,如果"的指针"和"集合"是用来替代正常b树.B树是一个非常聪明得到全面限制盘存取速度,e。g它们的贸易CPU使用,以减少盘的使用情况。然而,我们现在有这样的比赛ram。

但是,我们仍然需要数据库,因为这样做你自己

  • 锁定
  • 僵局的检测
  • 交易日志记录
  • 恢复
  • 等等

是非常困难的。

@S.洛特,给我们所有花这么长时间选择指标,避免加入和调查数据库性问题。必须有一个更好的办法。几年前我们被告知的"在存储器数据库",是更好的方式。所以之前我跳跃到使用一等,我想要知道为什么其他的人不使用他们的更多。

(I am不太可能使用TimesTen我自己,因为它是高价格(41 500美元.00/处理器)和我不喜欢说话Oracle销售人-我宁愿花费我的时间编写代码。)

参见:

更新:

我问这个问题 一段时间以前,这些天Microsoft SQL服务器"在只读存储器"这是一个存优化数据库引擎的数据库集成到SQL服务器发动机。它不是廉价的,但似乎 非常快 对于某些工作负荷。

有帮助吗?

解决方案

最有可能只有没有成熟产品的内存数据库,这可以作为充分替换为一个经典的数据库。

关系数据库是一个非常古老的概念。虽然有许多方法向前迈进和开发新技术,例如。面向对象的数据库,关系数据库并没有真正改变它们的概念。别指望事情变化太快了,因为数据库没有太大变化,在过去十年或十五年或更长的时间。

我认为,发展的技术不一样快,人们可能相信。它需要几十年的新概念是成熟和成立。首先在数据库技术,其中的成熟,更重要的然后其他任何东西。

在十或二十年来,数据库可能不一样了因为他们的今天。如果在存储器数据库是未来-没有人可以告诉今天这个-它们只是需要一些更多的时间来发展。

其他提示

没有人真的回答了这个问题"时应该考虑使用一个在存储器数据库,并有什么问题看出来的?"所以我会让它去。

你应该考虑在内存数据库,如果:1.目标系统的数据管理,但没有持续的媒体 2.性能要求不可能是遇到了一个数据库的持久性

为#1,认为该电视指南在你的机顶盒(STB)。低端STB(即那些没有DVR能力)没有持久性储存,并需要有持久性存储。但是该数据库为400道,14天的电视导向的是非微不足道的。有性能要求在这里,因为数据达从转发器的旋转木马在一个高速度和它的一个情况下的'捕捉到它,或者等到旋转木马来再来一次.但是,没有任何需要的持久性。我们都看到这一点;当你失去权力,在你的家,当它回来上电视指南,说"不久将提供",因为它是供应本身从发射机应答器或有线头-结束。网络路由器共享相同的特点:没有持久性储存,需要快速和可以将数据库设置一个外部来源(对等的路由器在网络上,在这种情况下,重新填充的路由表)。

有无穷无尽的例子#2:实时针对军事系统、高频贸易体系,并更多。

关于第二部分的问题,"问题以看出,":还有很多。

确保你在评估一个真正的内存数据库,如果你需要的效绩,只有在存储器数据库可以提供。缓存数据库的持久性是不相同的。扔一个数据库的持久性在RAM动是不一样的。使用的存储器数据库本身不会交易日志记录(如TimesTen)是不一样的(即使你的日志/dev/null)。

确保你的评估的一个数据库系统,而不仅仅是一个高速缓冲存储器(例如缓存).数据库系统将支持交易的酸性、多索引的选项,支持并行访问,以及更多。

关于酸:在存储器数据库系统不缺乏'D'(耐久性).它只是必须采取了上下文。交易在一个数据库的持久性是持久的只有这么长的媒体,它的存在是持久的。同样的事情是真的为存储器数据库。在任何一种情况下,如果你关心的耐用性,你最好有一个备份。

该趋势似乎是缓存积极和使用数据库来填充高速缓存。无论在哪里,该数据库的生活,加入仍然昂贵,因此对偏爱似乎可以做到的加入,一旦和缓的结果喜欢的东西 缓存速度.

还有在存储器数据库周围和使用它们,但它取决于下你希望使用它们。 源码 例如经常被用作为一个存储器数据库时的测试数据层。

最重要的原因是货物文化,并且非常低的知识水平。大多数应用程序的工作充分以及任何持久解决方案使用,如计算机仍然得到更快的每一年,没有足够的人感到痛苦,并能够精确定位的问题。

微软和甲骨文做太多的钱用他们的数据库的产品以使其(政治)可能为他们拿出更好的办法。

开发成本的使用的关系数据库是未作出透明,以便管理有没有想到有一个问题,让我们单独一个解决方案。

那么,在存储器数据库,通常缺乏的 D (耐久性)在 (原子性、一致性、隔离性、耐久性)通过他们的非常性质。这是可以克服一定程度上与"混合"办法,但是,在某一点的东西(无论是数据本身,或交易日志)必须坚持 某个地方 提供的耐久性的方面。这通常可以降低性能或引进其他非可取性,在存储器数据库解决方案

与此相反,大多数当今RDBMS是有充分的补酸,以及具有许多几十年的发展。这已导致基于磁盘数据库系统是非常高的,特别是与多年的改进和优化这一现代数据库系统已经看到(你的 B树 例仅仅是一个多)。

另一个因素是我们有能力作为应用开发商减轻负荷的数据库,通过这种机制 缓存, ,从而挤压得多 感知 业绩的数据层的应用程序。事实上,缓存本身已经看到的广泛的事态发展,近年来与分缓存在普遍的(只要看看该数 用户的缓存, 为例)。

具有讽刺意味的是,现代的高速缓存系统,在许多方面的,慢慢的transmogrifying入一个类似于一个真正的内存数据库系统。在存储器数据库的数据,像面向对象的数据库,是非常"的新的孩子在方框",所以它将会是有趣的,所有的这个进去的时间。Oracle现在已经取得的TimesTen,并且,根据 这个维基百科的文章, Microsoft正在进入存数据库市场上相当快。这两个现代化日"的大玩家"在传统的关系型数据库字段,正在存储器数据库系统的重视。

这也是一个选项: http://www.memsql.com/

我没有用过这个人,但它应该是沿线的替代MySQL在存储器。

各种便携版本的SQL,这将与相同的效率,为移动设备设计为主。

源码

SQL服务器上的紧凑的版本

这些只是大玩家的其它选项的可能是存在的,但很大的球员处理的最低要求释放。:)

在存储器数据库,必须持续备份的数据,如果波动或powercut出现,你可能丧失在大堆。如在其他的,将处理作为其在次级存储器(硬盘)和机会的损失将有10%的比较存储器数据库。

我希望这可以帮助:)

最典型的使用情况的数据库是持久性,这使得大多数在存储器数据库的数据不合适的。一个受欢迎的原因以使用存储器数据库是用于测试目的。但是,这需要你使用一个数据库,可以设立作为在存储器和其他东西。

受欢迎的选择在这个领域似乎是RavenDB。网开发人员和OrientDB Java开发。因为两者都可以作为在存储器数据库和"其他的东西"根据配置,因此可以使用一个或另一个取决于你的配置(应用程序。config。净,玛文或蚂蚁设置在Java)。

数据处理需求正变得越来越复杂和产品的生态系统的演变以满足这些新的需求。基于磁盘数据库、高速缓冲存储器、存储器数据库是用来满足不同的需要。你应该去有什么适合你的需要-

传统的关系型数据库: 你MySQL集足够快,很容易保持足够和你一样具有可靠性的酸遵守情况。

在存储器分发缓存: 你的应用需要做的快速读和写,而无需担心太多关于一致性或复杂的交易。

在存储RDBMS:

  1. (速度):你的应用程序需要处理数据/请求的速度比你的磁盘数据库。
  2. (复杂性):你需要做出复杂的交易读和写入与加入和聚合和喜欢使用权力的SQL。
  3. (可扩展性):你需要的规模数据库的水平没有停机时间。
  4. (维护性):你需要的数据库,以提供高可用性、复制、负载均衡和灾难恢复而无需添加到维护家务。
  5. (警告):你的数据应该适合在存储器(通常在千兆字节).
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top