我只是在想,现在是common to have enough RAM on your database server to cache your complete database了,为什么几年前很流行的memory database(例如TimesTen,也可以参见Wikipedia page)中的专家没有更多地使用呢?

似乎随着时间的推移,基于磁盘的数据库的使用率越来越低,例如,现在大多数应用程序都构建在传统的Rational数据库之上.我的预期正好相反,因为RAM对很多服务器来说都是免费的.

我是这样问的,因为我刚刚阅读了堆栈溢出体系 struct ,页面上写着

这很重要,因为堆栈

但我认为,如果使用"指针"和"集合"而不是普通的btree,这不会是一个问题.Btree非常聪明,可以绕过磁盘访问速度的限制,例如,它们通过交换CPU使用率来降低磁盘使用率.然而,我们现在有了这么多的对手.

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

  • 锁定
  • 死锁检测
  • 事务日志(log)
  • 正在恢复

是很难的.

@S.Lott,因为我们都花了这么长时间 Select 索引、避免联接和调查数据库性能问题.一定有更好的办法.几年前,我们被告知"在内存数据库中"是更好的方法.所以在我开始使用一个ETC之前,我想知道为什么其他人没有更多地使用它们.

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

See also:

Update:

我在LONG年前就问过这个问题,现在Microsoft SQL Server已经有了"In-Memory OLTP",这是一个集成到SQL Server引擎中的内存优化的数据库引擎.这并不便宜,但对于某些工作负载来说似乎是very fast.

推荐答案

最有可能的是,目前还没有成熟的内存数据库产品可以完全替代传统数据库.

关系数据库是一个非常古老的概念.虽然有许多方法来推进和开发新技术,例如.面向对象的数据库,关系数据库并没有真正改变它们的概念.不要期望事情改变得太快,因为数据库在过go 10年或15年甚至更长时间内没有太大变化.

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

十年或二十年后,数据库可能不再和今天一样.如果内存数据库是future 的发展方向--今天没有人能说出这一点--他们只需要更多的时间来开发.

Database相关问答推荐

SearchView 在 Android Studio 中显示 Data.entity.Cantact.@85c7ce6

是否可以同时从 RocksDB 读取?

如何使用 Gramex FormHandler 动态(在运行时)创建或更改数据库模式

Active Record - 获取数据库中的第二个、第三个.. 项(无 ID)

使用自动递增主键将 csv 导入 sqlite

如何在我的 Rails 应用程序中避免竞争条件?

估计数据库大小

无法使用命令行运行 liquibase

使用 LiquiBase 和 Spring 将大量值(使用 FK)插入数据库

微服务:每个实例或每个微服务的数据源?

SQLAlchemy 和 django,准备好生产了吗?

是否可以在ORDER BY子句之后放置任何可能造成安全风险的内容?

更改列名 Rails

MySQL 转储所有数据库并在导入时创建(或重新创建)它们?

JPA:处理 OptimisticLockException 的模式

显示包含特定表的所有数据库名称

Django Atomic Transaction 是否锁定数据库?

最小覆盖和功能依赖

Spring data : CrudRepository 的保存方法和更新

Oracle order NULL LAST 默认