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

Общие поля вынести в одну таблицу, а все остальные пихать

в jsonb рядом ?

41 ответов

13 просмотров

потом может быть трудности с поиском по этим данным

ciplenok- Автор вопроса

Я тоже вижу в этом риск) Насколько знаю, по jsonb искать можно, но это так себе затея

ciplenok- Автор вопроса
Nickelodeona K
для чего там еще индексы?

Индексы туда не накидывал. Вот сейчас про это читаю

Nickelodeona K
для чего там еще индексы?

то есть индексы будут работать норм с данными без схемы?

ciplenok
Я тоже вижу в этом риск) Насколько знаю, по jsonb ...

Зависит от целей, кмк. Далее - от размера jsonb и строки

ciplenok
Я тоже вижу в этом риск) Насколько знаю, по jsonb ...

А с чем Вы сравниваете, извините? Где-то есть какие-то "волшебные" индексы и неземные структуры данных для оптимизации такого поиска, что ли? Лично я вот тут https://www.mongodb.com/docs/manual/indexes/ их не вижу. Невнимательно смотрю?

ciplenok- Автор вопроса
Yaroslav Schekin
А с чем Вы сравниваете, извините? Где-то есть каки...

Я в целом про то, что в json долго что-то искать

ciplenok- Автор вопроса
ciplenok
Я в целом про то, что в json долго что-то искать

Послушайте... вот мне может в целом казаться, что массивы [используя только сравнения] долго как-то сортировать, аж O(n log n). Проблема тут в том, что сравнивать это не с чем, метода с лучшей асимптотикой существовать не может. Вот поэтому я и спрашиваю — долго по сравнению с чем, конкретно?

с классическими реляционными данными?

ciplenok- Автор вопроса

Если сравнивать с методом, когда для каждой категории создаем отдельную таблицу. Одна таблица с общими полями для всех объявлений и много таблиц со спец полями для каждой категории

Volodymyr а
с классическими реляционными данными?

Ну это же не Вы утверждали (я хотел выяснить, что именно имели в виду @ciplenok57 и @ask_ai)...

ciplenok
Если сравнивать с методом, когда для каждой катего...

Ага. И в условной "монге" это будет быстрее, потому что?

ciplenok- Автор вопроса
Yaroslav Schekin
Ага. И в условной "монге" это будет быстрее, потом...

В монге в рамках одной коллекции могут быть данные с разными ключами. Не встаёт проблема, что у тебя будет 20 таблиц из-за 20 категорий

ciplenok
В монге в рамках одной коллекции могут быть данные...

И от jsonb с GIN индексом в PostgreSQL это существенно отличается... как?

ciplenok
В монге в рамках одной коллекции могут быть данные...

> Не встаёт проблема, что у тебя будет 20 таблиц из-за 20 категорий Да, кстати... а почему это проблема?

ciplenok- Автор вопроса
Yaroslav Schekin
И от jsonb с GIN индексом в PostgreSQL это существ...

Тем, что монга это чистый nosql, а jsonb это нашлепка сверху sql бд. Интуитивно nosql должна работать лучше

наоборот: монга это чистая нашлепка без нормального sql, отношений и контроля целостности. Интуитивно она более ограничена в возможностях, а еще занимает очень много места и работает в несклько раз медленнее.

ciplenok
Тем, что монга это чистый nosql, а jsonb это нашле...

Нда. Т.е. всё свелось к "волшебным индексам и неземным структурам данных для оптимизации такого поиска". ;( А benchmarks PostgreSQL vs то-что-думаете-использовать Вы видели / делали? > Интуитивно nosql должна работать лучше Интуиция тут может подвести — ярлык "NoSQL", наклеенный на какую-то СУБД, не делает её быстрее (а её авторов — более компетентными в реализации каких-то структур данных и т.д. и т.п.).

D
наоборот: монга это чистая нашлепка без нормальног...

на запись, кстати, быстрее часто (максимальное лэтэнси, правда, может быть больше, чем у пг, но минамальное -- меньше)

Alexey Ermakov
на запись, кстати, быстрее часто (максимальное лэт...

да, обновлять скажем отдельные числа в монге может быть быстрее, чем обновлять жсонб, но медленнее, если все раскидано по полочкам

D
да, обновлять скажем отдельные числа в монге может...

Для решения "нужно персист хранилище, чтобы побыстрому втолкать, а потом понемногу разбирать и в кликхаус" - сойдет. Но я бы тогда, наверное, сциллу взял.

Yaroslav Schekin
Нормальные benchmarks в студию, что ж. ;)

https://www.diva-portal.org/smash/get/diva2:1595003/FULLTEXT01.pdf вот тут некоторые кейсы есть. на геоданных пг быстрее во всех случаях

Alexey Ermakov
https://www.diva-portal.org/smash/get/diva2:159500...

Ну и вот там написано: The result from the benchmarking show that the latency for Insert and Update operations were lower for MongoDB, while the latency for Read was lower for PostgreSQL. Но вот на этом месте я как-то стал сомневаться, что вообще стоит читать дальше (см. подчёркнутое). > The results from the source code analysis show that both DBMSs have a complexity of O(n), but that there are multiple differences in their software architecture affecting latency Как ни читай, это феерический бред — потому что одиночная вставка в таблицу у нас`O(1), в индекс `O(log N) (и поиска — тоже) , а если они считали на n вставок и поисков, то должно было получиться O(n) и O(n log n) соответственно. Т.е. такой единой асимптотики в PostgreSQL тупо нет. Опять-таки — нужны нормальные benchmarks.

Yaroslav Schekin
Ну и вот там написано: The result from the benchm...

выше ссылка на бенч от клика. "обычная" пг из коробки - медленней

Alexey Ermakov
выше ссылка на бенч от клика. "обычная" пг из коро...

Вы пропустили слово "нормальные" в моей просьбе показать benchmarks, мне кажется. ;) "Из коробки" (без настроек под "железо" и нагрузку) "обычная пг" предназначен(а) для того, чтобы работать "на кофеварке", в отличие от более новых СУБД, которые подобным не заморачиваются, понимаете? Т.е. увеличение производительности того же PostgreSQL, на том же "железе" и т.п. после tuning в три раза (или даже в шесть-восемь, в исключительных случаях) — это нормально.

Yaroslav Schekin
Вы пропустили слово "нормальные" в моей просьбе по...

я так понимаю, нормальный бенчмарк это где постгрес быстрее всех других? 🙂

Alexey Ermakov
я так понимаю, нормальный бенчмарк это где постгре...

Ты задал верный вопрос в правильном чате 😏

Alexey Ermakov
я так понимаю, нормальный бенчмарк это где постгре...

Нет, Вы понимаете неправильно. Это такой benchmark, где СУБД (и OS, и т.п.) адекватно сконфигурированы специалистами по каждой СУБД (под какой-то вид нагрузки), обеспечивают выполнение тех же (или сходных) требований к надёжности, восстанавливаемости и т.п. и выполняются на том же "железе" (и без параллельной нагрузки и т.п.), и benchmark tools к ним тоже написаны адекватно (т.е. имеют не сильно отличающийся от идеального для данной СУБД overhead). Честные, короче говоря, а не так любимый всеми benchmarketing (к слову, я как-то видел benchmark, где PostgreSQL версии 8-с-чем-то (!) доблестно "побеждает" современный ему Oracle — честностью там и не пахло, разумеется).

Alexey Ermakov
я так понимаю, нормальный бенчмарк это где постгре...

не стоит забывать классику https://youtu.be/VjryXJYATWk?t=3549

Yaroslav Schekin
Нет, Вы понимаете неправильно. Это такой benchmar...

Select 1; Однопоточно, учитывая время холодного старта СУБД

Alexey Ermakov
я так понимаю, нормальный бенчмарк это где постгре...

Обычно описывают железо: - CPU, RAM, диски, как собраны, VM или нет, сеть (если удалённо) - какая ОС стоит - любый настройки ядра/ОС отличные от дефолта - любые репы поставленные поверх дефолта - любые пакеты поставленные поверх дефолта - любые изменния конфигов, отличные от дефолта И сам тест: - как готовилась база — полностью воспроизводимый скрипт или дамп - как нагружалась: какие команды и как запускались, сколько потоков, какое время, и пр. Основная идея — другие на схожем (или идентичном) железе при такой же настройки и подготовке должны воспроизвести ваш результат.

Виктор Егоров
Обычно описывают железо: - CPU, RAM, диски, как со...

+100 Кстати, тесты TPC (публикуемые результаты) делаются именно так, по идее (плюс там должен быть внешний аудит). У стандартизированных, длительно используемых тестов есть другие проблемы, правда — например, производители/авторы конкретных СУБД начинают "затачивать" их под эти тесты, в т.ч. вводя в свои СУБД такие механизмы и настройки, которые полезны, грубо говоря, только для увеличения "попугаев" в этих самых тестах.

Alexey Ermakov
выше ссылка на бенч от клика. "обычная" пг из коро...

Кстати, даже про эту ссылку (и то, что я писал про настройки): настолько могут отличаться результаты после tuning.

Виктор Егоров
Обычно описывают железо: - CPU, RAM, диски, как со...

оба варианта, что я кидал, по моему, достаточно подробно описано, как подготовлены

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно 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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта