Database 什么时候我应该考虑使用内存数据库,需要注意哪些问题?

Database 什么时候我应该考虑使用内存数据库,需要注意哪些问题?,database,memory-management,transactions,in-memory-database,Database,Memory Management,Transactions,In Memory Database,我只是想,现在数据库服务器上有足够的RAM来缓存整个数据库已经司空见惯了,为什么几年前风靡一时的(例如,另请参见)专家没有得到更多的使用 似乎随着时间的推移,无磁盘数据库的使用越来越少,例如,大多数应用程序现在都建立在传统的rational数据库上。我本以为情况正好相反,因为对于很多服务器来说,RAM正接近免费 我在问这个问题,因为我刚刚阅读了堆栈溢出架构,页面上说 这很重要,因为堆栈 Overflow的数据库几乎已关闭 完全在RAM中,连接仍然存在 成本太高了 但如果使用“指针”和“集合”而不

我只是想,现在数据库服务器上有足够的RAM来缓存整个数据库已经司空见惯了,为什么几年前风靡一时的(例如,另请参见)专家没有得到更多的使用

似乎随着时间的推移,无磁盘数据库的使用越来越少,例如,大多数应用程序现在都建立在传统的rational数据库上。我本以为情况正好相反,因为对于很多服务器来说,RAM正接近免费

我在问这个问题,因为我刚刚阅读了堆栈溢出架构,页面上说

这很重要,因为堆栈 Overflow的数据库几乎已关闭 完全在RAM中,连接仍然存在 成本太高了

但如果使用“指针”和“集合”而不是普通的btree,我认为这不会是一个问题。Btree是一种非常聪明的方法,可以绕过磁盘访问速度的限制,例如,它们通过交换CPU使用率来降低磁盘使用率。然而,我们现在有这么多匹配内存

但我们仍然需要数据库,就像做你们自己的一样

  • 锁定
  • 死锁检测
  • 事务日志
  • 恢复
这很难

@考虑到我们都花了很长时间选择索引、避免连接和研究数据库性能问题。一定有更好的办法。几年前,我们被告知“内存数据库”是更好的方法。所以在我开始使用etc之前,我想知道为什么其他人没有更多地使用它们

(我本人不太可能使用TimesTen,因为它的价格很高(),而且我不喜欢与Oracle销售人员交谈——我宁愿花时间编写代码。)

另请参见:

  • ?
更新:


很久以前我问过这个问题,现在Microsoft SQL Server有一个集成到SQL Server引擎中的内存优化数据库引擎“”。它不便宜,但对于某些工作负载来说似乎非常快。

趋势似乎是积极缓存并使用数据库填充缓存。无论数据库位于何处,连接仍然非常昂贵,因此首选的方法似乎是执行一次连接,并将结果缓存在类似或的地方


仍然有内存中的数据库,它们被使用,但这取决于您想要使用它们的上下文。例如,在测试数据层时,通常将其用作内存中的数据库。

好吧,内存中的数据库通常缺乏中的(持久性)(原子性、一致性、隔离性、持久性)这一本质。这在某种程度上可以通过“混合”方法来克服,但是,在某一点上,某些东西(数据本身或事务日志)必须保存在某个地方以提供持久性方面。这通常会降低性能或为内存中数据库解决方案引入其他不需要的属性

相比之下,今天的大多数关系型数据库都有完整的ACID,并且有几十年的发展历史。这使得基于磁盘的数据库系统性能非常好,特别是在现代RDBMS系统经过多年的改进和优化后(您的示例只是其中之一)

另一个因素是,作为应用程序开发人员,我们能够通过以下机制减少数据库的负载,从而从应用程序的数据层挤压更多的感知性能。事实上,缓存本身在最近几年得到了广泛的发展,现在分布式缓存非常普遍(例如,只需看看缓存的数量)


具有讽刺意味的是,现代的缓存系统在许多方面正在慢慢演变成类似于真正的内存数据库系统的东西。内存中的数据库,像面向对象的数据库一样,在很大程度上是“块上的新孩子”,因此,看看所有这些在时间上都到了哪里,这将是一件有趣的事情。甲骨文现在已经收购了TimesTen,据报道,微软正在考虑很快进入内存数据库市场。这是传统RDBMS领域的两个现代“大玩家”,他们正在认真对待内存数据库系统。

很可能没有成熟的内存数据库产品可以完全替代经典数据库

关系数据库是一个非常古老的概念。尽管有许多方法可以推动和开发新技术,例如面向对象数据库,但关系数据库并没有真正改变它们的概念。不要期望事情变化得太快,因为数据库在过去十年、十五年甚至更长的时间里变化不大

我认为,技术的发展并不像人们想象的那么快。新概念的成熟和确立需要几十年的时间。首先,在数据库技术中,成熟度比其他任何东西都重要得多


在十年或二十年内,数据库可能不再像今天一样。如果说内存中的数据库是未来的话——今天没有人能告诉我们这一点——那么它们只需要更多的时间来开发。

最重要的原因是货物文化,以及IT中的知识水平非常低。无论使用何种持久性解决方案,大多数应用程序都能很好地工作,而且随着计算机每年的速度不断提高,没有足够的人感受到痛苦并能够找出问题所在

微软和甲骨文通过他们的数据库产品赚了太多的钱,使得他们(从政治上)有可能想出更好的方法


使用关系数据库的开发成本没有透明化,因此管理层不知道存在问题,更不用说解决方案了。

没有人真正回答“当