内存数据库 (in-memory database) 的发展现状和前景如何?

内存数据库是指一种将全部内容存放在内存中,而非传统数据库那样存放在外部存储器中的数据库。内存数据库指的是所有的数据访问控制都在内存中进行,这是与磁盘数…
关注者
592
被浏览
312,107

38 个回答

谈一下我从SIGMOD'22中的一些观察与收获:

  1. in-memory database早期确实与column-store/HTAP系统关系密切。HTAP系统中将分析型操作的数据转化为in-memory的column store,是一种经典的做法,具体可以参考SIGMOD'22的一个tutorial:HTAP Databases: What is New and What is Next
  2. larger-than-memory database作为一种折中方案也有应用的场景。当数据量大于物理内存的时候,纯in-memory db就难以应对了,larger-than-memory db应运而生,在SIGMOD'22上一篇结合cloud的文章:HiEngine: How to Architect a Cloud-Native Memory-Optimized Database Engine,或者Andy Pavlo早期的工作介绍更详细具体一些。
  3. 作为in-mem db 和on-disk db的另一种折中方式是一个系统两种都支持。这种诉求也很朴素,既然在实际业务中两种(或者多种)引擎都有部署,那为什么不能统一多个引擎进行cross-engine的查询操作呢,这类工作可以参考SIGMOD'22的文章:Skeena: Efficient and Consistent Cross-Engine Transactions

按照这个逻辑,in-memory db的前景的话,一定是结合新的业务场景(cross-engine),顺应新的系统架构(cloud-native),同时支持新的存储介质(NVM/SCM),可以把这个方向推到一个新的高度。

内存数据库将会越来越重要,将来每一个DBA都要掌握内存数据库,每一名开发,也要懂些内存数据库。现在大数据概念火的一溻糊涂,大数据的“数据”从何而来?当然是前台的OLTP系统,用户总是会要求响应速度越来越快,而前台OLTP系统随着用户越来越多,业务越来越多等等因素,速度、响应时间都会逐渐变慢,内存数据库无疑是解决OLTP性能问题的最好方式。而且现在内存容量在快速加大,价格成本却保持不变。三、四年前配有32G、64G内存的PC Server已经是大的了,现在256G内存已经是主流配置。“将数据库全部Load到内存”中,这DBA、开发们的梦想,势必会比“中国梦”更快实现。在这些条件下,内存数据库的需求一定会快速生长起来。

但内存数据库和将“数据全部Load到内存中的传统数据库”,有何区别呢?内存数据库通常以Key-Value方式存取数据,其内部简单。传统数据库,单是“读/写”操作前的SQL解析,就要耗费不少资源。内存数据库功能单一,但更短的代码路径,使性能也更加快速。

但内存数据库不会独立于传统数据库而单独存在,因为内存是易失的。现在具有持久化功能的内存库,如redis、couchbase等,其持久化功能相较传统数据库还较溥弱,持久化性能也不如传统数据库。因此,内存数据库将一直是传统数据库的一种强有力的补充。

如果说传统数据库是一支军队,那么内存数据库就是为执行某种特殊任务的特种部队,不要求功能多,但一定要快速、迅猛。

我没有从技术角度讲这个问题,更没有去比较现在的内存数据库谁更强。技术的高低很难用几句话甚至几篇文章描述,更多时候,可能某种技术只在某些种情况下是最好的,换其他的情况,可能就是其他技术更好。我只从商业角度来回答这个问题。现在“大数据”这个名词火的一溻糊涂。但正如海洋是由每一滴水汇集而成一样,“大数据”是由一条条”数据“汇集而,这聚集成大数据的”数据“又从何而来,当然是OLTP。OLTP相当于企业”大数据“的咽喉,没有OLTP中的数据,没有大数据中的数据。而内存数据库现在已经成为OLTP中不可或缺的部分,而且随着OLTP规模扩展,会越来越重要。