Как выбрать серверное хранилище для Datomic?
Является ли выбор, скажем, DynamoDB вместо Postgres вопросом предпочтения, или у каждого варианта есть свои компромиссы? Если так, то кто они?
Как выбрать серверное хранилище для Datomic?
Является ли выбор, скажем, DynamoDB вместо Postgres вопросом предпочтения, или у каждого варианта есть свои компромиссы? Если так, то кто они?
Службы хранения данных Datomic обычно должны соответствовать трем требованиям:
Datomic использует службы хранения для хранения блоков отсортированных сжатых данных, аналогично тому, как традиционные системы баз данных используют файловые системы, и приведенные выше требования в значительной степени представляют собой API между базовой службой хранения и Datomic. Таким образом, выбор служб хранения данных зависит от насколько хорошо они соответствуют этим трем требованиям.
Datomic обычно не оказывает большого давления на базовую службу хранения, так как в нее записывает только один компонент — Transactor. Кроме того, Datomic использует задание фонового индексирования для интеграции новинок в хранилище после того, как их будет накоплено достаточно (по умолчанию ~ 32 МБ, но можно настроить), что еще больше снижает постоянную нагрузку записи. Единственное, что сразу пишет Datomic, — это журнал транзакций.
Datomic использует несколько уровней кэширования, т. е. memcached и одноранговый кеш, поэтому в идеальных условиях, т. е. когда рабочий набор помещается в память, системы также не будут сильно давить на чтение.
Если вашей системе не требуется огромная масштабируемость операций записи, а данные вашего приложения, как правило, умещаются в памяти, то выбор конкретной службы хранения не имеет значения, за исключением, конечно, их операционные возможности (резервное копирование, инструменты администрирования и т. д.), которые не имеют ничего общего с Datomic.
Если, с другой стороны, ваша система требует высокой масштабируемости записи или у вас большое количество одноранговых узлов, каждый из которых работает с большим объемом данных, чем может поместиться в их памяти (вынуждая множество сегментов данных для извлечения из хранилища), вам потребуется система хранения, которая может масштабироваться по горизонтали, например ДинамоДБ. Как упоминалось в одном из комментариев, если вам нужна произвольная масштабируемость записи, Datomic в любом случае вам не подходит.