数据库存储结构都有哪些形式?
数据库的存在对于任何一个软件的运行以及网站信息的存储都是非常有必要的。但是并不是所有的存储方式都能满足需求,我们需要根据不同的情况进行调整。下面IT培训就从案例分析的角度出发来了解一下,不同的数据库存储结构的优劣性。
从读/写工作负载平衡、一致性需求、延迟和访问模式等方面看,应用是各异的。如果我们能对数据库和存储内部设施架构决策了然于胸,那么将有助于我们理解系统行为模式的原因所在,一旦在问题时能解决问题,并能根据工作负载调优数据库。
B树和LSM树结构上的大差别之一,在于优化的目的,以及优化的意义。
下面对B树和LSM树做一个对比。总而言之,B树具有如下属性:
B树是可变的,这支持通过引入一些空间开销,以及更为关联的写路径,实现就地更新。B树并不需要完全的文件重写或多源合并。
B树是读优化的。即B树不需要从多个源读取(因此也不需要此后的合并操作),这简化了读路径。
写可能会触发节点的级联分割,这会使一些写操作更昂贵。
B树是针对分页(块存储)环境优化的,其中不存在字节地址。Theyareoptimizedforpagedenvironments(blockstorage),wherebyteaddressingisnotpossible.
虽然也需要重写,但是通常情况下B树存储要比LSM树存储需要更少的维护。
并发访问需要读/写隔离,其中一系列的锁和闩(latch)。
LSM树具有如下特性:
LSM树是不可写的。SSTable是一次性写入磁盘的,永不更新。紧缩操作通过从多个数据文件移除条目,并合并具有相同键的数据,实现空间的整合。在紧缩过程中,已合并的SSTable将被丢弃,并在成功合并后移除。不可写提供的另一个有用特性,就是刷新后的表可并发访问。
LSM是写优化的。这意味着写入操作将被缓存,并顺序地刷新到磁盘中,潜在地支持磁盘上的空间本地性。
读操作可能需要从多个数据源访问数据。因为不同时间写入的具有相同键的数据,可能会落在不同的数据文件中。记录在返回给客户前,必须经过合并过程。
LSM树需要做维护和紧缩,因为缓存的写入操作将被刷新到磁盘。