Які алгоритми / питання читання ви б рекомендували для вирішення транзакцій / блокування читання-запису?


10

Спрощена класична транзакція з базою даних може розглядатися як:

  • читання М предметів
  • виконавши деякий розрахунок на основі цих показань
  • написання деяких N результатів на основі цих розрахунків, які можуть включати в себе елементи, спочатку прочитані.

При здійсненні цих транзакцій (одночасно) властивості ACID потрібно підтримувати.

Точно такі ж вимоги (N оновлень на основі M читає трансакційно) існують і в інших одночасних системах, що не мають СУБД.

Мені цікаво дізнатися, які алгоритми існують для виконання / вирішення цих транзакцій, і які відносні сильні та слабкі сторони в цих алгоритмах. Чи можете ви порадити читання? Це можуть бути книги або онлайн-довідники / навчальні посібники.

Пояснення:

Так, наприклад, наївним алгоритмом може бути кожна транзакція, що займає єдиний глобальний замок, фактично примушуючи єдину нитку та вилучати одночасність. Трохи складнішим алгоритмом буде окремий блокування читання / запису окремих елементів з наказом уникнути тупикової ситуації). І т. Д. Чи є гарне джерело, яке документує різні алгоритми вирішення цієї проблеми. Навіть відповідь, яка лише вказувала на єдиний алгоритм з його силою та слабкими сторонами, була б корисною.


3
Це питання, безумовно, потрапляє в рамки цього веб-сайту. Я рекомендую написати трохи більше про контекст, в якому ви працюєте. В даний час це досить загально і відкрито.
Дейв Кларк

Як ви вважаєте, чи варто перефразовувати це саме питання бази даних? IE щось на кшталт "У мене є база даних, в яку можна читати і записувати, і я хочу вміти транзакційно читати і записувати з властивостями ACID. Які алгоритми існують для забезпечення цих властивостей"
Nick Fortescue

Перефразовуючи запитання, ви можете отримати відповіді, ближчі до того, що ви шукаєте, наприклад, детальну інформацію про проблему, яку ви намагаєтеся вирішити; на даний момент ви даєте лише підказки. У будь-якому випадку це здається, що ви запитуєте класичні алгоритми транзакцій бази даних.
Дейв Кларк

@Dave - дякую, я відредагував. Краще?
Нік Фортеску,

1
Ви вже знайомі з підручниками СУБД, такими як Рамакришнан та Герке? І якщо ви не питаєте про внутрішні системи СУБД, чи можете ви уточнити питання, щоб повідомити нам про різницю між СУБД і тим, що вас цікавить?
Maverick Woo

Відповіді:


10

Книга « Трансакційні інформаційні системи » Вайкума та Воссена охоплює досить багато областей, як в теоретичному, так і в практичному плані, з різних точок зору, а не лише угод. Це близько 1000 сторінок, тож ви будете зайняті на вихідні-два. З іншого боку, йому майже 10 років, тож може з’явитися щось більш сучасне. Інші книги у рядку включають контроль та відновлення кон'юнктури в системах баз даних Бернштейна, П., Хадділакоса, В. та Гудмена, N, Аддісон-Веслі, 1987, Обробка транзакцій: Концепції та методики Джима Грея та Андреаса Ройтера та принципи обробки транзакційФіліп А. Бернштейн та Ерік Ньюкомер, 2009. Я не бачив останнього, але, будучи найновішим, це може бути гарним місцем для початку, хоча ваше рішення цілком може бути знайдено в старих текстах. Поїздка до бібліотеки, можливо, буде вартим.

Монументальним текстом у цій галузі є Атомні транзакції Нансі Лінч та ін. У ньому представлені формальні відомості та підтвердження ряду видів алгоритмів, які вас цікавлять. Це досить формально і нудно, тому може не на ваш смак.

Багато останніх робіт присвячено програмі Transactional Memory , яка застосовує ідеї транзакцій до багатопотокових програм. Щороку є десятки публікацій на цю тему: на сторінці вікіпедії подано безліч посилань.


1
дякую Дейву, особливо за фразу "Програмна транзакційна пам'ять", я не натрапив на цю назву
Нік Фортеску,

1
STM - це дійсно гаряча тема в дослідженнях мов програмування в наші дні. Проводиться гонка щодо того, чи будуть моделі програмування на основі STM або Actor основою майбутніх одночасних (= всіх) мов програмування.
Дейв Кларк

1
Крім STM, одне конкретне ключове слово, яке слід шукати всередині цих посилань, - це MVCC. Він використовується в більшості сучасних СУБД: en.wikipedia.org/wiki/Multiversion_concurrency_control
Maverick Woo

@supercooldave Я не впевнений, що це гонка: я думаю, що майбутнім мовам доведеться підтримувати трохи певної чи іншої міри.
Марк Хаманн

@Marc Harmann: метафорично кажучи.
Дейв Кларк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.