Мы используем буферы протоколов(protobuf) для внутреннего определения наших схем и имеем переводчиков для перевода в различные другие внутренние представления, такие как схема JSON (конвертер схем Protobuf в JSON), чтобы схемы protobuf были источником правды.
Мы также планируем создавать SQL DDL из схем protobuf и не смогли найти для этого надежный, хорошо поддерживаемый преобразователь. Некоторые из найденных нами, например jsonutils, похоже, не активны.
Генераторов SQL для protobuf достаточно (Пример: https://github.com/jackskj/protoc- gen-map/)
Нам нужен простой преобразователь для преобразования схем protobuf в операторы CREATE при создании схемы protobuf и, возможно, операторы ALTER при добавлении новых столбцов в схемы protobuf (мы не поддерживаем изменение типов полей или удаление полей в наших схемах protobuf) в SnowSQL.
Вложенные сообщения могут храниться как варианты, и их не нужно выравнивать.
/>Существуют ли какие-либо инструменты или нам следует написать для этого специальный инструмент?
message Foo {
string uuid = 1;
MessageType1 message_type1 = 2;
MessageType2 message_type2 = 3;
google.protobuf.Timestamp updated_at = 4;
float some_num = 5;
}
переводится на
CREATE TABLE FOO (
uuid string,
message_type1 variant,
message_type2 variant,
updated_at TIMESTAMP_LTZ(9),
some_num float
);
Обновление схемы
message Foo {
string uuid = 1;
MessageType1 message_type1 = 2;
MessageType2 message_type2 = 3;
google.protobuf.Timestamp updated_at = 4;
float some_num = 5;
string new_field = 6;
}
переводится на
ALTER TABLE FOO ADD COLUMN new_field string;
или
CREATE TABLE FOO (
uuid string,
message_type1 variant,
message_type2 variant,
updated_at TIMESTAMP_LTZ(9),
some_num float,
new_field string
);
Подробнее здесь: https://stackoverflow.com/questions/697 ... to-sql-ddl