数据库 – 磁盘性能上的持久(纯功能)红黑树
我正在研究最好的数据结构来实现一个简单的开源对象临时数据库,目前我非常喜欢使用Persistent Red-Black树来实现.
我使用持久性数据结构的主要原因首先是最小化锁的使用,因此数据库可以尽可能平行.此外,实现ACID事务也将更容易,甚至能够抽象数据库以在某种集群上并行工作. 所有这一切非常酷,但我对使用磁盘上持久数据结构的整体性能有点怀疑.即使今天有一些非常快的磁盘,并且所有写入都可以异步完成,所以响应始终是立即的,我不想在一个假的前提下构建所有应用程序,只是为了实现它不是一个很好的做到这一点 这是我的思路: 但是一路上有一些可能的陷阱: 有什么想法吗? 谢谢! 编辑: 解决方法如果您发现写入时间遇到瓶颈,或者如果没有同步写入(嗯…),您的耐用性保证是无意义的,您应该做大多数其他数据库的工作:实现 Write-Ahead Log(WAL)或重做日志.磁盘实际上很顺利地编写,至少这是他们最好的.这是一个非常慢的随机写入(如树中的那些).即使闪存驱动器从磁盘中击败随机写入,在顺序写入时仍然显着更好.实际上,即使大多数RAM在顺序写入时更好,因为涉及的控制信号较少. 通过使用预写日志,您不用担心: 撕毁写(你在猫吃掉你的电源之前写了一半的树形图)>信息丢失(你实际上没有坚持树,但乔认为你这样做)>随机,同步磁盘I / O具有巨大的性能表现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |