Clusterwide spaces
Кластерные спейсы нужны в первую очередь для управления самим кластером, но могут применяться и для каких-нибудь справочников.
Идея кластерных спейсов заключается в том, что пикодата предоставляет основанный на raft журнале API доступа к данным. Содержимое этих спейсов одинаково на каждом инстансе.
ACID
- Atomic - что касается записи, пока можно и одной операцией ограничиться. Если надо будет - объединим несколько операций в одной raft entry. Куда более важно обеспечить атомарность чтения + записи.
- Consistent - обеспечивается автоматически, покуда никакие шаловливые ручки не трогают кластерные спейсы в обход рафт журнала.
- Isolation - самый животрепещущий вопрос. Какой уровень изоляции транзакци может и собрается предоставить пикодата? Я думаю, serializable.
- Durable - автоматически обеспечивается рафтом.
Onboarding
- Все "системные" спейсы (picodata_instance, picodata_replicaset, picodata_migration) не хардкодятся, а создаются через единый механизм clusterwide ddl.
-
Все кластерные операции выполняются посредством этого clusterwide dml:
- join
- update peers target_grade
- update peers current_grade (by governor)
- add migration