在解决事务/读写锁时,您会建议哪种算法/读物?


10

简化的经典数据库事务可以视为:

  • 阅读M件
  • 根据这些读数执行一些计算
  • 根据这些计算写出N个结果,其中可能包括最初读取的元素。

(同时)执行这些事务时,需要保留ACID属性。

在其他非DBMS并发系统中确实存在相同的要求(基于M个事务读取的N个更新)。

我感兴趣的是找出存在哪些算法来执行/解决这些事务,以及这些算法的相对优势和劣势是什么。你能推荐一些阅读吗?这可能是书籍或在线参考资料/教程。

澄清:

因此,例如,一个幼稚的算法可能是每个事务都获得单个全局锁,实际上是强制执行单个线程并删除并发。稍微复杂一点的算法将是单个项目的读/写锁定,并带有避免死锁的顺序。等等。是否有大量文献记录了解决该问题的各种算法。即使仅指出具有其优点和缺点的单一算法的答案也将是有用的。


3
这个问题当然属于本网站的范围。我建议您多写一些有关您工作环境的信息。目前,它相当笼统和开放。
戴夫·克拉克

您是否认为应该改写,这正是数据库问题?IE之类的东西“我有一个可以读写的数据库,并且我希望能够使用ACID属性进行事务性的读写。存在哪些确保这些属性的算法”
Nick Fortescue 2010年

改写问题可能会导致答案更接近您要寻找的内容,例如提供您要解决的问题的更多详细信息;目前您仅提供提示。无论如何,听起来您都在要求经典的数据库事务算法。
戴夫·克拉克

@Dave-谢谢,我已经编辑过。更好?
Nick Fortescue 2010年

1
您已经熟悉诸如Ramakrishnan和Gehrke的DBMS教科书吗?而且,如果您不询问DBMS的内部结构,是否可以澄清这个问题,以使我们知道DBMS与您感兴趣的内容之间的区别?
Maverick Woo,2010年

Answers:


10

Weikum和Vossen撰写的《交易信息系统》一书从理论和实践的角度,从不同的角度,涵盖了很多领域,而不仅仅是交易。它长约1000页,因此将使您忙一两个周末。另一方面,它已有近10年的历史,因此可能还有更多最新的信息。此行中的其他书籍包括Bernstein,P.,Hadzilacos,V.和N的Goodman,Addison-Wesley,1987年的《数据库系统中并发控制和恢复》, Jim Gray和Andreas Reuter的《事务处理:概念和技术》《原理》。交易处理由Philip A. Bernstein和Eric Newcomer着,2009年。我没有看过后者,但尽管它的解决方案可能在较旧的文献中找到了,但作为最近的它可能是一个不错的起点。去图书馆旅行可能是值得的。

该领域的里程碑式著作是Nancy Lynch等人的《原子交易》。它提供了一个正式的说明以及您感兴趣的多种算法的证明。它相当正式,繁琐,因此可能不符合您的口味。

最近有很多工作致力于软件事务存储,它将事务的思想应用到多线程应用程序中。每年有数十本关于该主题的出版物:维基百科页面提供了大量参考。


1
感谢dave,尤其是对于“软件事务性存储”一词,我没想到这个名字
Nick Fortescue 2010年

1
STM是当今编程语言研究中一个非常热门的话题。争分夺秒的是,基于STM还是基于Actor的编程模型将成为未来并发(=所有)编程语言的基础。
戴夫·克拉克

1
除了STM之外,在这些引用中查找的一个特定关键字是MVCC。大多数现代DBMS中都使用了它:en.wikipedia.org/wiki/Multiversion_concurrency_control
Maverick Woo,2010年

@supercooldave我不确定这是一场比赛:我认为未来的语言在某种程度上必须同时支持这两种语言。
马克·哈曼

@马克·哈曼:隐喻地说。
戴夫·克拉克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.