Вопрос
Я начинаю исследование проекта, которому необходимо будет предоставить семантику ACID в своей базе данных.
Из-за характера данных они не подходят для хранения в обычных готовых системах (реляционных или ключ-значениях).
Какие есть хорошие ресурсы о том, как реализовать системы, которые должны обеспечивать семантику ACID?
Мой типичный поиск в Google возвращает больше информации о системах, которые уже предоставляют семантику ACID, а не о том, как реализовать такие системы.
Решение
ARIES - это популярный алгоритм для реализации базы данных ACID (например, SQL Server использует этот алгоритм).
<Ол>Другие советы
Тимоти Лири - как управлять своим мозгом
Если вы знаете немецкий, я бы порекомендовал
- Альфонс Кемперер:Datenbanksysteme - Eine Einführung, ISBN 3486576909
«Einführung», что означает «знакомство», — сильное преуменьшение.В книге есть несколько глав о том, как физически разместить данные, WAL (упреждающая запись в журнал), сериализуемые и .несериализуемые истории, перезапуск после сбоев и многое другое.
Однако я сомневаюсь, что вам действительно хочется написать что-то подобное.Нужно ли напоминать вам, что теоретически вы можете смоделировать любую структуру данных поверх реляционной модели?
Посмотрите на оптимистичный параллелизм. Используйте подход STM (программная транзакционная память) вместо блокировки. Гораздо быстрее и проще в реализации. Вы можете иметь 10000 или 100000 транзакций ACID в секунду, используя уровень изоляции SERIALIZABLE. Не нужно ослаблять изоляцию свойства транзакций.
Кроме того, я предлагаю рассмотреть возможность использования частично постоянной структуры данных для кэша в памяти и, возможно, также для данных на диске. Это позволяет читателям никогда не блокироваться операциями записи.
Информацию о базе данных, над которой я работаю, смотрите в http://bergdb.com/ . Не стесняйтесь связаться со мной для обсуждения этой интересной темы. / Франс Лундберг
И для моего понимания плохо определенных свойств ACID:
http://blog.franslundberg.com/ 2013/12 / кислота-делает-не-макияж sense.html