Упрощенная классическая транзакция базы данных может рассматриваться как:
- чтение М предметов
- выполняя некоторые расчеты на основе этих чтений
- написание некоторых N результатов, основанных на этих расчетах, которые могут включать элементы, которые изначально были прочитаны.
При выполнении этих транзакций (одновременно) необходимо поддерживать свойства ACID .
Точно такие же требования (N обновлений на основе M считываний транзакционно) существуют в других параллельных системах, не относящихся к СУБД.
Мне интересно узнать, какие существуют алгоритмы для выполнения / разрешения этих транзакций, и каковы относительные сильные и слабые стороны этих алгоритмов. Не могли бы вы порекомендовать почитать? Это могут быть книги или онлайн-ссылки / учебные пособия.
Разъяснение:
Так, например, наивным алгоритмом может быть то, что каждая транзакция берет одну глобальную блокировку, фактически вызывая единую многопоточность и удаляя параллелизм. Немного более сложным алгоритмом были бы блокировки чтения / записи отдельных элементов с упорядочением во избежание тупиковых ситуаций). И т. Д., И т. Д. Есть ли хороший источник, документирующий различные алгоритмы для решения этой проблемы. Даже ответ, который указывает только на один алгоритм с его сильными и слабыми сторонами, будет полезен.
источник
Ответы:
Книга « Транзакционные информационные системы » Weikum и Vossen охватывает довольно много областей, как в теоретическом, так и в практическом смысле, с разных точек зрения, а не только транзакций. Это около 1000 страниц, поэтому вы будете заняты на выходные или два. С другой стороны, ему почти 10 лет, так что может быть что-то более современное. Другие книги в этой серии включают « Управление параллельным доступом и восстановление в системах баз данных » Бернштейна П., Хадзилакоса В. и Гудмана Н.Д. Аддисона-Уэсли, 1987 г. « Обработка транзакций: концепции и методы » Джима Грея и Андреаса Рейтера и « Принципы» обработки транзакцийPhilip A. Bernstein и Eric Newcomer, 2009. Я не видел последний, но, будучи самым последним, он мог бы стать хорошим началом, хотя ваше решение вполне может быть найдено в более старых текстах. Поездка в библиотеку может стоить.
Монументальный текст в этой области - « Атомные транзакции » Нэнси Линч и соавт. Он представляет формальный отчет и доказательства ряда видов алгоритмов, которые вас интересуют. Он довольно формален и утомителен, поэтому может не соответствовать вашему вкусу.
Много недавней работы посвящено программной транзакционной памяти , которая применяет идеи транзакций к многопоточным приложениям. Ежегодно на эту тему публикуются десятки публикаций: на странице википедии содержится множество ссылок.
источник