Подтвердить что ты не робот

Как влияет база данных на Datomic?

Как мне выбрать службу хранения данных для Datomic?

Можно ли выбрать, скажем, DynamoDB вместо Postgres, или каждый вариант имеет разные компромиссы? Если да, то каковы они?

4b9b3361

Ответ 1

Требования к службам хранения

Datomic 'службы хранения должны в основном соответствовать трем требованиям:

  • Внедрить семантику сохранения ключевого значения: эффективный доступ для чтения/записи с использованием индексированных значений ключей
  • Поддержка согласованного чтения. например читайте свои собственные записи. В идеале, не допускается утверждение/блокировка.
  • Поддержка условных пометок. например оптимистичная блокировка + изоляция моментальных снимков.

Datomic использует хранилища для хранения блоков отсортированных и сжатых датмов, подобно тому, как традиционные системы баз данных используют файловые системы, а указанные выше требования в значительной степени являются API между базовым сервисом хранения и Datomic. Поэтому выбор в службах хранения зависит от , насколько они поддерживают эти три требования.

Масштабирование записи

Datomic обычно не оказывает большого давления на запись на базовое хранилище, так как там только один компонент пишет Transactor. Кроме того, Datomic использует задание фонового индексирования для интеграции новизны в хранилище, когда оно было накоплено (по умолчанию - 32 МБ, но может быть настроено), что еще больше уменьшает постоянную нагрузку на запись. Единственное, что немедленно пишет Datomic, это журнал транзакций.

Масштабируемость чтения

Datomic использует несколько уровней кэширования, то есть кэши memcached и peers, поэтому в идеальных условиях, то есть когда рабочий набор подходит в памяти, системы не будут слишком много давать давление считывания.

Загрузка системы

Если ваша система не требует огромной масштабируемости записи, и данные вашего приложения, как правило, соответствуют памяти, тогда выбор конкретной службы хранения нерелевантный, за исключением, конечно, для их операционных возможностей ( резервные копии, инструменты администрирования и т.д.), которые не имеют ничего общего с Datomic.

Если, с другой стороны, для вашей системы требуется огромная масштабируемость записи, или у вас есть большое количество одноранговых узлов, каждый из которых работает с большим количеством данных, чем может поместиться в их памяти (заставляя много сегментов данных использоваться из хранилище), вам потребуется система хранения, которая может быть горизонтально масштабирована, например DynamoDB. Как упоминалось в одном из комментариев, если вам нужна произвольная масштабируемость записи, Datomic в любом случае не подходит для вас.