อัลกอริทึม / เรื่องการอ่านที่คุณจะแนะนำเกี่ยวกับการแก้ไขธุรกรรม / ล็อคการอ่าน - เขียนคืออะไร?


10

ธุรกรรมฐานข้อมูลแบบดั้งเดิมที่เรียบง่ายสามารถดูได้ใน:

  • อ่านรายการ M
  • ทำการคำนวณบางอย่างตามที่อ่าน
  • การเขียนผลลัพธ์ N บางรายการตามการคำนวณเหล่านี้ซึ่งอาจรวมถึงองค์ประกอบที่อ่านมา แต่เดิม

เมื่อทำธุรกรรมเหล่านี้ (พร้อมกัน) คุณสมบัติของกรดจะต้องได้รับการปรับปรุง

ความต้องการเดียวกัน (การอัพเดต N ที่อ้างอิงตามการอ่าน M) มีอยู่ในระบบอื่นที่ไม่ใช่ DBMS พร้อมกัน

ฉันสนใจที่จะค้นหาว่ามีอัลกอริธึมใดบ้างสำหรับการดำเนินการ / แก้ไขธุรกรรมเหล่านี้และจุดแข็งและจุดอ่อนที่เกี่ยวข้องของอัลกอริทึมเหล่านี้คืออะไร คุณช่วยแนะนำให้อ่านบ้างไหม? อาจเป็นหนังสือหรือการอ้างอิง / บทแนะนำออนไลน์

ชี้แจง:

ยกตัวอย่างเช่นอัลกอริธึมไร้เดียงสาอาจเป็นธุรกรรมแต่ละรายการที่มีการล็อกแบบโกลบอลเพียงครั้งเดียว อัลกอริธึมที่ซับซ้อนกว่านี้เล็กน้อยคือล็อกการอ่าน / เขียนแต่ละไอเท็มพร้อมกับคำสั่งเพื่อหลีกเลี่ยงการหยุดชะงัก) อื่น ๆ เป็นต้นมีแหล่งข้อมูลที่ดีสำหรับการแก้ไขปัญหานี้หรือไม่ แม้แต่คำตอบที่ชี้ไปที่อัลกอริธึมเดียวเพราะความแข็งแกร่งและจุดอ่อนจะมีประโยชน์


3
คำถามนี้อยู่ในขอบเขตของเว็บไซต์นี้อย่างแน่นอน ฉันขอแนะนำให้เขียนเพิ่มเติมเกี่ยวกับบริบทที่คุณทำงานอยู่ ในปัจจุบันมันค่อนข้างทั่วไปและเปิดกว้าง
Dave Clarke

คุณคิดว่ามันคุ้มค่าที่จะใช้การประพันธ์ใหม่หรือไม่ดังนั้นจึงเป็นคำถามฐานข้อมูลอย่างแม่นยำหรือไม่ IE บางอย่างเช่น "ฉันมีฐานข้อมูลที่สามารถอ่านและเขียนได้และฉันต้องการให้สามารถอ่านและเขียนธุรกรรมด้วยคุณสมบัติ ACID มีอัลกอริทึมใดสำหรับการรับรองคุณสมบัติเหล่านี้"
Nick Fortescue

การทิ้งคำถามอาจส่งผลให้คำตอบใกล้เคียงกับสิ่งที่คุณกำลังมองหาเช่นให้รายละเอียดเพิ่มเติมของปัญหาที่คุณพยายามแก้ไข ในปัจจุบันคุณเพียงให้คำแนะนำ ไม่ว่าในกรณีใดดูเหมือนว่าคุณกำลังขออัลกอริทึมธุรกรรมฐานข้อมูลแบบคลาสสิก
Dave Clarke

@Dave - ขอบคุณฉันได้แก้ไข ดีขึ้นหรือไม่
Nick Fortescue

1
คุณคุ้นเคยกับตำรา DBMS เช่น Ramakrishnan และ Gehrke หรือไม่? และถ้าคุณไม่ถามเกี่ยวกับ internals ของ DBMS คุณสามารถอธิบายคำถามเพื่อให้เราทราบความแตกต่างระหว่าง DBMS และสิ่งที่คุณสนใจได้หรือไม่?
Maverick Woo

คำตอบ:


10

หนังสือระบบข้อมูลธุรกรรมโดย Weikum และ Vossen ครอบคลุมพื้นที่ค่อนข้างมากทั้งในแง่ทฤษฎีและการปฏิบัติจากมุมมองที่แตกต่างกันไม่ใช่แค่การทำธุรกรรม มันยาวประมาณ 1,000 หน้าดังนั้นคุณจะยุ่งเป็นเวลาหนึ่งหรือสองสัปดาห์ ในทางกลับกันมันมีอายุเกือบ 10 ปีดังนั้นอาจมีบางสิ่งที่เป็นปัจจุบันมากกว่านี้ หนังสือเล่มอื่น ๆ ในสายประกอบด้วยการควบคุมและกู้คืนระบบฐานข้อมูลพร้อมกันโดย Bernstein, P. , Hadzilacos, V. , และ Goodman, N, Addison-Wesley, 1987, การประมวลผลธุรกรรม: แนวคิดและเทคนิคโดย Jim Gray และ Andreas Reuter และหลักการ ของการประมวลผลธุรกรรมโดย Philip A. Bernstein และ Eric Newcomer, 2009 ฉันไม่ได้เห็นคนหลัง แต่เป็นคนล่าสุดมันอาจเป็นจุดเริ่มต้นที่ดีแม้ว่าการแก้ปัญหาของคุณอาจพบได้ในตำราเก่า การเดินทางไปห้องสมุดอาจคุ้มค่า

ข้อความที่เป็นอนุสรณ์ในพื้นที่นี้คือธุรกรรม Atomicโดย Nancy Lynch และคณะ มันนำเสนอบัญชีที่เป็นทางการและหลักฐานของอัลกอริทึมหลายชนิดที่คุณสนใจมันค่อนข้างเป็นทางการและน่าเบื่อดังนั้นจึงอาจไม่เหมาะกับคุณ

งานล่าสุดจำนวนมากมีไว้สำหรับSoftware Transactional Memoryซึ่งใช้แนวคิดการทำธุรกรรมกับแอพพลิเคชั่นแบบมัลติเธรด มีหลายสิบสิ่งพิมพ์ในหัวข้อนี้ในแต่ละปี: หน้าวิกิพีเดียให้การอ้างอิงมากมาย


1
ขอบคุณเดฟโดยเฉพาะอย่างยิ่งสำหรับวลี "ซอฟต์แวร์หน่วยความจำธุรกรรม" ฉันไม่ได้เจอชื่อนี้
Nick Fortescue

1
STM เป็นหัวข้อที่น่าสนใจมากในการวิจัยภาษาโปรแกรมในปัจจุบัน มีการแข่งขันกันเพื่อดูว่ารุ่นการเขียนโปรแกรมที่ใช้ STM หรือ Actor จะเป็นพื้นฐานของภาษาการเขียนโปรแกรมพร้อมกันในอนาคต (= ทั้งหมด) หรือไม่
Dave Clarke

1
นอกจาก STM แล้วคำค้นหาหนึ่งคำที่ต้องค้นหาภายในการอ้างอิงเหล่านี้คือ MVCC มันถูกใช้ใน DBMSs ที่ทันสมัยที่สุด: en.wikipedia.org/wiki/Multiversion_concurrency_control
Maverick Woo

@supercooldave ฉันไม่แน่ใจว่ามันเป็นการแข่งขัน: ฉันคิดว่าภาษาในอนาคตจะต้องสนับสนุนทั้งในระดับหนึ่งและอีกระดับ
Marc Hamann

@ Marc Harmann: การเปรียบเทียบเชิงเปรียบเทียบ
Dave Clarke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.