ydb-platform / ydb

YDB is an open source Distributed SQL Database that combines high availability and scalability with strong consistency and ACID transactions
https://ydb.tech
Apache License 2.0
4k stars 565 forks source link

YDB Public Roadmap 2022 Discussion #76

Closed fomichev3000 closed 5 days ago

fomichev3000 commented 2 years ago

The Community is welcome to discuss YDB Public Roadmap available via https://github.com/ydb-platform/ydb/blob/main/ROADMAP.md

Please leave your comments below.

gayratv commented 2 years ago

С какими проблемами столкнулся.

Плохо (совсем не очевидным образом) работает построитель плана запросов

  1. если есть вторичный индекс - то его надо прямо указывать в sql запросе для использования - хотелось бы чтобы он применялся в случае если есть самостоятельно (при необходимости)

  2. если вторичный индекс явно указан в запросе, но, например если написать выражение field1=2 то вторичный ключ полностью игнорируется где field1 - поле вторичного ключа, например uint64 - а 2 неявно преобразуется к int т.е. если есть несовпадение типа константы и field1 - то вторичный ключ игнорируется

  3. хотелось бы если пишешь field2 = 1, field3 = 'abc' чтобы не надо было явно писать литерал того же типа что field, а оптимизатор автоматически преобразовывал константу к типу field

fomichev3000 commented 2 years ago

For the history, after discussion in telegram chat:

  1. Partial and effective JSON updates UPDATE table SET column_type_jsondocument=JSON_SETVALUE(“a.b.c”, 1)
  2. Table colocation (by ddoarn)
  3. Kafka Connect integration https://docs.confluent.io/platform/current/connect/index.html
gayratv commented 2 years ago

Внутри Яндекс есть средство для тестирования запросов, которое предлагает автодополнение имен полей и таблиц.

Я уже отвык от отсутствия данной функции

хотелось бы:

  1. сделать автодополнение имен полей и таблиц в WEB консоли

  2. сделать плагин для Jetbrains data grid, который работал бы по аналогии с mysql - читал схему базы данных, соответственно предлагал бы автодополнение имен, хорошо бы чтобы в Jetbrains появился бы язык YQL, была бы возможность создать/удалить таблицу, сделать backup/restore YDB Было бы совсем круто - если бы Jetbrains умел разбирать синтаксис YQL и показывать ошибки

morozovsk commented 2 years ago

нормальный интерфейс, чтобы можно было без проблем подконнектиться через mysql/postgres драйвер, а не ждать пока кто-нибудь сделает библиотеку под мой фреймворк или колхозить это самому. хотелось бы использовать на текущем проекте, но нет никакого желания писать с нуля кучу обвязки вокруг вашего sdk. придётся наверное подождать пару лет до начала массового использования либо пока китайцы допилят до ума...

Meai commented 2 years ago
  1. I would like a way to convert any result to a JSON string before it comes back. Sql Server has a 'FOR JSON', in other dbs I use json_agg
  2. Also I think it would be really good if the initial config were easier. Just trying to get a single server started locally is hard to figure out. There are some huge yaml configs somewhere but even those have 3 replicas or whatever defined. Generally I really just want to run ./ydbd and it should start with no problems on localhost (like cockroachdb actually, their only annoyance is that I have to specify --insecure so I dont get hassled for ssl certs). I know that you provided docker instructions with extra scripts but that didn't work for me and it's besides the point, it would really be better if the binary could start simply.
gayratv commented 2 years ago

через mysql/postgres драйвер

Я думаю это точно невозможно потому что YQL не совместим с SQL от MySQL Например когда я писал запрос к serverless YDB я по каждому запросу смотрел план выполнения и добивался того, чтобы запрос выбирал минимальное количество записей, что положительно сказывалось на уменьшении RU

morozovsk commented 2 years ago

@gayratv

Я думаю это точно невозможно

у кликхауса тоже свой диалект и ничё, запилили поддержку и mysql и postgres драйверов

OSA413 commented 2 years ago

Можете рассказать, почему YDB требует минимум 64 ГБ для диска? Это может быть не очень удобно для небольшого использования или тестов. https://github.com/ydb-platform/ydb/issues/75

Edit: возможно, это требуется только для поднятия через Докер, но было бы лучше, если можно меньше поставить размер YDB_PDISK_SIZE https://ydb.tech/en/docs/getting_started/self_hosted/ydb_docker#start-pars

Edit2: могу вынести это в отдельную Issue, если так будет удобно.

polRk commented 2 years ago

Add native support for List<Primitive>, Dict<Primitive, Primitive> in ydb columns as value.

polRk commented 2 years ago

Change Data Capture with SELECT

chertov commented 2 years ago
MichaelMonashev commented 2 years ago

Изменение типа столбца и индексов одной командой. Пример: ALTER TABLE episodes ALTER COLUMN id Uint32;

MichaelMonashev commented 2 years ago

Сейчас невозможно остановить через Ctrl+C выполнение запроса:

$ ydb -e grpc://localhost:2136 -d /Root/test yql -s 'DELETE FROM my_table_44;' ^C^C^C^C^C

Хотелось бы иметь возможность останавливать то, что долго работает или делает не то, что хотелось.

MichaelMonashev commented 2 years ago

Хотелось бы видеть TRUNCATE TABLE tbl_name

MichaelMonashev commented 2 years ago

Не хватает конструкции, которая показывала бы для указанной таблицы текст запроса для её создания. SHOW CREATE TABLE tbl_name

MichaelMonashev commented 2 years ago

Хотелось бы иметь возможность задавать значение по умолчанию для столбцов.

MichaelMonashev commented 2 years ago

Хотелось бы иметь столбцы, в которых нельзя хранить NULL: id Uint64 NOT NULL

MichaelMonashev commented 2 years ago

Не хватает документации, описывающей, как пользоваться очередью.

MichaelMonashev commented 2 years ago

В документации не хватает описания частых ошибок, объяснения их причин и способов исправления.

uh-zuh commented 2 years ago

Вариант инсталляции и постепенного апгрейда для стартапа.

Хочется иметь возможность для начала поднять полноценный кластер на 3 простеньких VPS, ведь этого в теории достаточно чтобы обеспечить достаточную отказоустойчивость (переживать отказ одной VPS), чтобы полноценно использовать такой кластер в продакшене.

А далее по мере роста нагрузки и занимаемого места иметь возможность постепенно бесшовно заменять ноды на более большие и мощные и также бесшовно потом переезжать на своё железо.

GeneratorEVil commented 2 years ago

Всем привет! Немогу на Uint64 установить NULL. Как правильно делать set null?

Execution engine errors: SetProgram (370): ydb/core/engine/kikimr_program_builder.cpp:549: Bind(): requirement value.GetStaticType()->IsSameType(*callable.GetType()->GetReturnType()) failed. Incorrect type for parameter %kqp%1, expected: Type (List) { List item type: { Type (Tuple) with 2 elements { #0 : { Type (Optional) { Optional item type: { Type (Data), schemeType: Utf8, schemeTypeId: 4608 } } } #1 : { Type (Data), schemeType: Utf8, schemeTypeId: 4608 } } } } , actual: Type (List) { List item type: { Type (Tuple) with 2 elements { #0 : { Type (Optional) { Optional item type: { Type (Data), schemeType: Utf8, schemeTypeId: 4608 } } } #1 : { Type (Optional) { Optional item type: { Type (Data), schemeType: Utf8, schemeTypeId: 4608 } } } } } }

alexv-smirnov commented 2 years ago

Не хватает документации, описывающей, как пользоваться очередью.

Появилось: https://ydb.tech/ru/docs/concepts/topic (концепты) https://ydb.tech/ru/docs/reference/ydb-cli/topic-overview (CLI) https://ydb.tech/ru/docs/reference/ydb-sdk/topic (Go SDK)

Bessonov commented 1 year ago

Я предложил бы отказаться от многоязычной документации. Иметь хорошую документацию - это очень много работы. А поддерживать и держать несколько языков ещё сложнее. Вот, например, добавляется непоследовательность. Владеть английским на уровне документации как бы для разработчиков и админов необходимо (сам самоучка). Лучше инвестировать в фичи, чем в борьбу с непоследовательностью в документации. Имхо.

Bessonov commented 1 year ago

If I've understand BlobStorage correctly, it is about internal storage. Probably, it isn't a goal, but it would be great if we could use ydb as a blob storage.