我正在观看video(软件架构),Robert C. Martin的演讲,在视频的后半部分,数据库的主题是主要焦点.
根据我对他所说的内容的理解,似乎他说SSD会降低数据库的实用性(相当大).
为了解释我是如何得出这种解释的:
他讨论了如何使用HDD /旋转磁盘,检索数据的速度很慢.但是,他说,现在我们使用固态硬盘.他从“RAM即将来临”开始,然后继续提及RAM磁盘,但后来说他不能称之为RAM磁盘,因此只能说RAM.因此,对于RAM,我们不需要索引,因为每个字节需要相同的时间才能得到. (本段由我解释)
因此,他建议RAM(如在计算机内存中)作为DB的替代品(因为我解释他的陈述)是没有意义的,因为这就像说在应用程序的生命周期内所有记录都在内存中处理(除非您按需从磁盘文件中提取)
所以,我采用RAM思考,他的意思是SSD.因此,在这种情况下,他说SSD会降低数据库的实用性.他甚至说:“如果我是甲骨文,我会感到害怕.我存在的根本原因正在消失.”
从我对SSD的一点了解,不像硬盘驱动器,这是O(n)寻道时间(我认为),SSD接近O(1),或几乎是随机的.所以,他的建议对我很有意思,因为我从未想过这样.
几年前我第一次被介绍到数据库时,当一位教授描述了常规文件系统的好处时,
我总结说,数据库的主要作用本质上是一个非常索引的文件系统(以及优化,缓存,并发访问等),因此,如果SSD中不需要索引,这种方式确实使数据库不那么有用.
尽管如此,我认为很难相信它们变得不那么有用了,因为每个人仍然使用DB作为应用程序的主要点,而不是纯粹的文件系统,并且觉得他过于简单化了数据库的作用.
注意:我确实观察到最后,以确保他没有说出不同的东西.
以供参考:
42:22是整个数据库主题出现的时候,
43:52他开始说“为什么我们甚至有数据库”
This答案确实说SSD可以大大加快数据库速度.
This问题询问优化如何变化.
对于TL;我的问题是,在服务器市场中广泛使用SSD(无论是即将发生还是已经发生)的出现是否会降低数据库的实用性?
这似乎是主持人试图传达的是,使用SSD,人们可以将数据存储在磁盘上,而不必担心像旧SSD那样检索它的速度有多慢,就像SSD一样,寻道时间接近O(1)(我认为).因此,如果这是真的,那么假设会失去其中的一个优势:索引,因为索引更快的搜索时间的优势消失了.
解决方法
> ACID (Atomicity,Consistency,Isolation,Durability)
>某种形式的并发控制,MVCC (Multiversion concurrency control)
>库的标准化访问(XQuery或sql)
他对索引的看法不对.如果可以将整个表读入ram,则索引仍然有用.不相信我?我们来做一个思想实验,
>想象一下,你有一个带有一个索引列的表.
CREATE TABLE foobar ( id text PRIMARY KEY );
>想象一下,该表中有5亿行.
>想象一下,所有5亿行被连接成一个文件.
什么更快,
> grep’keyword’文件
> SELECT * FROM foobar WHERE id =’keyword’
这不仅仅是关于数据的位置,而是关于您如何订购以及您可以执行哪些操作. Postgresql支持B-tree,Hash,GiST,SP-GiST,GIN和BRIN索引(以及通过扩展的Bloom).你认为所有的数学和功能都消失了,因为你有更快的随机访问权限,这是愚蠢的.