215 похожих чатов

Вопрос к авторам коннекторов, в каком виде вы возвращаете результаты

таких iproto-операций как insert, update, replace, etc. Сам протокол возвращает тапл в IPROTO_DATA, где значения полей доступны только по индексу. Меня интересует, конвертит ли его кто-нибудь перед отдачей в мапу в случае, когда у спейса задан формат и мы можем сопоставить имена полей индексам? Это может быть удобно для пользователя, но может потребовать лишнего запроса к серверу (если схема еще не запрашивалась). То есть что-то типа:


space_wo_format:insert({1, 'foo'})
---
- [1, 'foo']

vs


space_w_format:insert({1, 'foo'})
---
- {id: 1, name: 'foo'}
```

```

12 ответов

18 просмотров

Я в Perl-коннекторе на коннекте читаю схему и таплы всегда конверчу в мапу по схеме

Mons Anderson
Я в Perl-коннекторе на коннекте читаю схему и тапл...

Коннектор для перла не поддерживается вроде. Когда-то я пробовал его, но понял что заброшено. И юзал на петоне

Eugene-Leonovich Автор вопроса

а это поведение отключаемо? например, если пользователь работает со спейсами через id и ему не важно, что там вернет insert(), вычитываение схемы тогда будет избыточной операцией. Я тоже склоняюсь к варианту отдавать в ответ мапу если задана схема, но хочется дать возможность легко это отключать для конкретного вызова. Поэтому думаю над апи для всего этого - можно передавать опциональный параметр при вызове метода (insert(tuple, as_map=true)), можно возвращать объект который будет сам себя конвертировать (insert(tuple).toMap()), можно иметь несколько методов (insertAndReturnTuple, insertAndReturnMap). Как я понимаю, в твоем коннекторе всегда будет мап?

я в своем коннекторе всегда конверчу к ассоциативным массивам мало того, если call возвращает выборку из спейса, то у call есть опция что он возвращает данные из спейса и тогда тоже проводится преобразование

Eugene-Leonovich Автор вопроса

А в какой момент времени вычитывается схема в вашем коннекторе при таком запросе (псевдокод): conn = connect() res = conn.getSpaceById(513).insert(tuple) ?

Eugene Leonovich
А в какой момент времени вычитывается схема в ваше...

Сразу после установления соединения, до того, как клиенту говорится, что соединение установлено

Eugene Leonovich
А в какой момент времени вычитывается схема в ваше...

> res = conn.getSpaceById(513).insert(tuple) мне не нравится такой подход, хотя многие его применяют. мне нравится так: res = conn.insert(space_name, tuple) res = conn.insert(space_number, tuple)

Eugene Leonovich
а это поведение отключаемо? например, если пользов...

В asynctnt например возвращаются спец объекты к которым можно обращаться как по индексам так и по именам полей спейса если задан формат Вычитывание схемы отключаемо на уровне соединения

Eugene-Leonovich Автор вопроса
Igor Latkin
В asynctnt например возвращаются спец объекты к ко...

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

Eugene Leonovich
вот и я думал про такие спец объекты. С ними вычит...

Схему один раз при подключении и (опционально) когда она поменяется вычитать несложно, в памяти много места она не занимает. Юзерские схемы для запросов -- другой вопрос, я бы здесь использовал формат авро

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта