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