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 ответов

19 просмотров

Я в 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
вот и я думал про такие спец объекты. С ними вычит...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
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...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта