Skip to content

Implemented basic ent driver for YDB#2

Merged
kprokopenko merged 16 commits intoydb-platform:ydb-developfrom
LostImagin4tion:LostImagin4tion/YDBENT-2
Nov 11, 2025
Merged

Implemented basic ent driver for YDB#2
kprokopenko merged 16 commits intoydb-platform:ydb-developfrom
LostImagin4tion:LostImagin4tion/YDBENT-2

Conversation

@LostImagin4tion
Copy link
Collaborator

No description provided.

@LostImagin4tion
Copy link
Collaborator Author

Я переписал логику транзакций, теперь используется database/sql. Но я прям совсем не уверен, что правильно все сделал)

Как размышлял:

  1. Нашел у вас вот такой пример для транзакций через database/sql

  2. Проблема в том, что DoTx снова использует коллбек, в котором перечислены все запросы в рамках интерактивной транзакции. То есть DoTx не подходит для реализации database/sql.Tx, потому что у нее каждый запрос должен отрабатывать при вызове отдельного метода

  3. Далее полез внутрь DoTx. Увидел, что там используется метод RetryWithResult. На его основе я и реализовал Tx.Exec и Tx.Query. По сути, заново написал DoTx.
    Проблема в том, что в реализации DoTx используется RetryWithResult только один раз на всю транзакцию. У меня же он используется на каждый запрос, что наверно не очень для перформанса. Пока не очень понимаю, что с этим делать?

  4. Реализация на горутине все-таки нравится мне больше, может посмотришь еще раз?). Правда тогда будет снова актуальна проблема, как замокать данные от бд, но можно придумать, как извернуться

@LostImagin4tion
Copy link
Collaborator Author

Окей, я придумал, что сделать с ретраями.
Собственно, сейчас моя реализация транзакции делает ретрай на каждую операцию, что неправильно
Но было непонятно, куда девать тогда ретраи
Я нашел, что надо транзакции создаются из сгенерированного кода. Поэтому можно переложить ретраи в шаблон для кодгена, это кажется логичным

@LostImagin4tion LostImagin4tion force-pushed the LostImagin4tion/YDBENT-2 branch from 1cedde4 to 006ca41 Compare November 10, 2025 21:44
@LostImagin4tion
Copy link
Collaborator Author

LostImagin4tion commented Nov 10, 2025

В общем, когда я переписал драйвер на database/sql, стало понятно, что это та же самая реализация драйвера для sql
Но мне все равно кажется, что нативный драйвер может пригодиться в будущем для каких-то нативных фичей YDB
Поэтому я оставил свой драйвер, просто заэмбедил в него sql.Driver. Если нативный драйвер все-таки не понадобится, уберу его потом

@LostImagin4tion LostImagin4tion force-pushed the LostImagin4tion/YDBENT-2 branch from 440188b to 29eb9c0 Compare November 11, 2025 14:51
@LostImagin4tion LostImagin4tion changed the title YDBENT-2: implemented basic ent driver for YDB #1 YDBENT-2: implemented basic ent driver for YDB Nov 11, 2025
@kprokopenko kprokopenko merged commit c7de6ed into ydb-platform:ydb-develop Nov 11, 2025
6 checks passed
@LostImagin4tion LostImagin4tion changed the title YDBENT-2: implemented basic ent driver for YDB Implemented basic ent driver for YDB Nov 11, 2025
@LostImagin4tion LostImagin4tion deleted the LostImagin4tion/YDBENT-2 branch November 11, 2025 15:37
@LostImagin4tion LostImagin4tion restored the LostImagin4tion/YDBENT-2 branch November 14, 2025 16:38
@LostImagin4tion LostImagin4tion deleted the LostImagin4tion/YDBENT-2 branch November 17, 2025 16:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants