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


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.