
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据库的存在对于任何一个软件的运行以及网站信息的存储都是非常有必要的。但是并不是所有的存储方式都能满足需求,我们需要根据不同的情况进行调整。下面我们就从案例分析的角度出发来了解一下,不同的数据库存储结构的优劣性。
从读/写工作负载平衡、一致性需求、延迟和访问模式等方面看,应用是各异的。如果我们能对数据库和存储内部设施架构决策了然于胸,那么将有助于我们理解系统行为模式的原因所在,一旦在问题时能解决问题,并能根据工作负载调优数据库。
B树和LSM树结构上的大差别之一,在于优化的目的,以及优化的意义。
下面对B树和LSM树做一个对比。总而言之,B树具有如下属性:
B树是可变的,这支持通过引入一些空间开销,以及更为关联的写路径,实现就地更新。B树并不需要完全的文件重写或多源合并。
B树是读优化的。即B树不需要从多个源读取(因此也不需要此后的合并操作),这简化了读路径。
写可能会触发节点的级联分割,这会使一些写操作更昂贵。
B树是针对分页(块存储)环境优化的,其中不存在字节地址。They are optimized for paged environments (block storage), where byte addressing is not possible.
虽然也需要重写,但是通常情况下B树存储要比LSM树存储需要更少的维护。
并发访问需要读/写隔离,其中一系列的锁和闩(latch)。
LSM树具有如下特性:
LSM树是不可写的。SSTable是一次性写入磁盘的,永不更新。紧缩操作通过从多个数据文件移除条目,并合并具有相同键的数据,实现空间的整合。在紧缩过程中,已合并的SSTable将被丢弃,并在成功合并后移除。不可写提供的另一个有用特性,就是刷新后的表可并发访问。
LSM是写优化的。这意味着写入操作将被缓存,并顺序地刷新到磁盘中,潜在地支持磁盘上的空间本地性。
读操作可能需要从多个数据源访问数据。因为不同时间写入的具有相同键的数据,可能会落在不同的数据文件中。记录在返回给客户前,必须经过合并过程。
LSM树需要做维护和紧缩,因为缓存的写入操作将被刷新到磁盘。
存储系统的评估
在存储系统的开发中,总是需要考虑一些挑战和因素。优化目标对存储系统选择有着切实的影响。如果可以在写操作上花费更多时间,那么就可以部署针对更高效读操作的结构,预留额外的空间用于就地更新。这有利于实现更快的写操作,并支持将数据缓存在内存中,以确保顺序的写操作。但是,所有这些是不可能一次性达成的。我们理想中的存储系统具有低的读代价、低的写代价,并没有其它开销。但在实践中,数据结构需折衷考虑多个因素。理解这些折衷考虑是非常重要的。
哈佛大学DASlab(数据系统实验室)的研究人员总结了数据库系统优化的三个关键参数:读开销、更新开销和内存开销,统称为“RUM”。对于特定的用例,理解这些参数中哪个是重要的,将对数据结构、访问方法,甚至是特定工作负载的适用性产生影响,因为算法需要根据特定的用例做出调整。
作者:Alex Petrov
译者:盖磊
节选:infoq
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。