mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 15:42:02 +00:00
Cloud databases: development [#METR-19998].
This commit is contained in:
parent
6e75a1d1c0
commit
57563193e4
@ -35,10 +35,10 @@ namespace DB
|
||||
/database_name
|
||||
/name_hash_mod -> compressed_table_list
|
||||
- список пар (хэш от имени таблицы, хэш от структуры) в сжатом виде
|
||||
/ordered_locality_keys - ключи локальности
|
||||
/key-SEQNO -> key_value - порядковый номер ключа локальности (в порядке того, как они были встречены) -> значение ключа локальности
|
||||
/locality_keys - сериализованный список ключей локальности в порядке их появления
|
||||
- ключ локальности - произвольная строка
|
||||
- движок БД определяет серверы для расположения данных таким образом, чтобы, при одинаковом множестве живых серверов,
|
||||
- движок БД определяет серверы для расположения данных таким образом,
|
||||
чтобы, при одинаковом множестве живых серверов,
|
||||
одному ключу локальности соответствовала одна группа из N серверов для расположения данных.
|
||||
/nodes - список серверов, на которых зарегистрированы облачные БД с таким путём в ZK
|
||||
/hostname - имя хоста
|
||||
@ -109,11 +109,21 @@ public:
|
||||
|
||||
private:
|
||||
void createZookeeperNodes();
|
||||
|
||||
/// Получить имя узла, в котором будет храниться часть списка таблиц. (Список таблиц является двухуровневым.)
|
||||
String getNameOfNodeWithTables(const String & table_name) const;
|
||||
|
||||
/// Хэшировать имя таблицы вместе с именем БД.
|
||||
Hash getTableHash(const String & table_name) const;
|
||||
|
||||
/// Определения таблиц хранятся косвенным образом и адресуются своим хэшом. Вычислить хэш.
|
||||
Hash getHashForTableDefinition(const String & definition) const;
|
||||
|
||||
/// Пойти в ZooKeeper и по хэшу получить определение таблицы.
|
||||
String getTableDefinitionFromHash(Hash hash) const;
|
||||
|
||||
/// Определить серверы, на которых будут храниться данные таблицы.
|
||||
std::vector<String> selectHostsForTable(const String & locality_key) const;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ void DatabaseCloud::createZookeeperNodes()
|
||||
ops.push_back(new zkutil::Op::Create(zookeeper_path + "/table_definitions", "", acl, zkutil::CreateMode::Persistent));
|
||||
ops.push_back(new zkutil::Op::Create(zookeeper_path + "/tables", "", acl, zkutil::CreateMode::Persistent));
|
||||
ops.push_back(new zkutil::Op::Create(zookeeper_path + "/local_tables", "", acl, zkutil::CreateMode::Persistent));
|
||||
ops.push_back(new zkutil::Op::Create(zookeeper_path + "/ordered_locality_keys", "", acl, zkutil::CreateMode::Persistent));
|
||||
ops.push_back(new zkutil::Op::Create(zookeeper_path + "/locality_keys", "", acl, zkutil::CreateMode::Persistent));
|
||||
ops.push_back(new zkutil::Op::Create(zookeeper_path + "/nodes", "", acl, zkutil::CreateMode::Persistent));
|
||||
|
||||
auto code = zookeeper->tryMulti(ops);
|
||||
@ -770,6 +770,11 @@ void DatabaseCloud::shutdown()
|
||||
}
|
||||
|
||||
|
||||
std::vector<String> DatabaseCloud::selectHostsForTable(const String & locality_key) const
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void DatabaseCloud::drop()
|
||||
{
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user