Давайте рассмотрим каждый из этих вопросов по очереди.
Выполняет ли Bigtable операции записи в журнал для каждой отдельной операции или в партиях?
Bigtable записывает каждую операцию в постоянный журнал, когда он входит, а не в пакетном режиме. Другими словами, он является синхронным, а не асинхронным: к моменту, когда сервер отвечает клиенту, данные уже были записаны в журнал (который долговечен и реплицирован), а не только в память.
Если система хранения данных только записывает в память и записывает в пакетную запись, она потеряет данные, которые были только в памяти, если сервер должен был сбой после принятия некоторых операций записи, но до того, как он поместил их в журнал ,
Это имеет смысл, но не замедляет ли запись каждой операции на сервер журнала, а не в пакетном режиме (потому что она записана на диск)?
Распределенная файловая система за Bigtable (ранее Google File System, теперь Colossus) гораздо быстрее, чем обычные файловые системы, даже если он распространяется и каждая операция записи дублируется.
На тестах с использованием YCSB, Google Cloud Bigtable продемонстрировал single-digit millisecond latency на обоих читает и пишет даже на хвост: