@dba_ru

Страница 653 из 718
Fike
12.09.2018
15:44:30
давайте я еще раз спрошу: что будет, когда туда набьется несколько тысяч комментариев по килобайту каждый?

Dmitry
12.09.2018
15:45:19
Конечно будет плохо. Для этого такое использовать не стоит

Google
Ilya
12.09.2018
15:45:24
@@@ Мы работаем в ногу со временем и храним все в JSON @@@ Используем автоинкремент отдельным полем, а почему вы спрашиваете?
Ты так говришь, как будто в монге нет списка с документами и у этого списка (двумерной таблички Карл) нет айдишника и индексов.

Dmitry
12.09.2018
15:45:44
Но если это write only данные, например логи, то такой проблемы не стоит

Ilya
12.09.2018
15:46:12
давайте я еще раз спрошу: что будет, когда туда набьется несколько тысяч комментариев по килобайту каждый?
Ну я участвовал в разрботке базы где сотни лямов записей с достаточно сложным json.

Dmitry
12.09.2018
15:46:39
У меня есть такие данные которые просто приходят и их надо считать. Они никогда не меняются. Согласен что с postgress можно это тоже сделать

Ilya
12.09.2018
15:46:50
Конешн оптимизировать-секционировать приходится, но зато работает быстро.

Fike
12.09.2018
15:46:56
и строить индекс по айди или по другому полю - функциональной разницы нет (кроме шардирования)

Ilya
12.09.2018
15:47:48
Или это не ответ на твой ответ? :)

Dmitry
12.09.2018
15:49:44
Давайте так. Если данные нужно только собирать и считать - до можно и в JSON и это удобнее и проще. Если же данные нужно модифицировать и проверять структуру - то JSON не подходит - нужна реляционная структура. Согласны?

Fike
12.09.2018
15:50:58
Работать будет.
то есть тебе ок хранить записи по несколько мегабайт и вытаскивать все комментарии для условной рсс?

Google
Ilya
12.09.2018
15:52:24
Ты не хочешь вытаскиватьт все комментсы?

Или хочешь чтобы они отдельно хранились?

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

Fike
12.09.2018
15:55:05
Ilya
12.09.2018
15:55:06
И можно модифицировать, почему ж нельзя.

Fike
12.09.2018
15:55:26
Никто тебя не заставляет всё сразу выдавать, выдавай ток то что нужно, не гоняй по сети лищние мегабайты.
то есть по-твоему бд умеет вытаскивать поле текста, не подтягивая при этом остальные поля?

Fike
12.09.2018
15:55:51
ага

ну, из джсона - если это не было понятно из контекста

Ilya
12.09.2018
15:56:04
ага
Ну ок, тебе виднее.

Al
12.09.2018
15:56:25
Ну я участвовал в разрботке базы где сотни лямов записей с достаточно сложным json.
Это типа аргумент? А я был в хедофисе гугл и эпл. Ты проиграл.

Ilya
12.09.2018
15:56:32
ну, из джсона - если это не было понятно из контекста
А чем джсон так уж отличается от других видов данных?

Fike
12.09.2018
15:56:43
хотя в принципе весь SQL и так строковый, так что тут даже без джсона было бы примерно так же, он в любом случае сначала бы строку со скалярами находил и вытаскивал

Ilya
12.09.2018
15:56:53
Fike
12.09.2018
15:56:57
Al
12.09.2018
15:57:19
Ilya
12.09.2018
15:57:28
тем, что он не бинарный
Блин, ну почитай книжку, в Постгресине есть json и jsonb - последний как раз бинарный.

jsonb - распарсен.

Google
Ilya
12.09.2018
15:59:07
Ребят, я понимаю что вам кажется что никто кроме монги не додумался ни до чего, но в реальности практическки всё уже давно в постгресине есть.

Fike
12.09.2018
15:59:35
бинарный небинарный формат

это что-то вроде синхронной репликации?

Ilya
12.09.2018
15:59:49
https://postgrespro.ru/docs/postgrespro/10/datatype-json

Dmitry
12.09.2018
16:01:05
Fike
12.09.2018
16:01:08
бгггг сам иди читай > Данные JSON, как и данные любых других типов, хранящиеся в таблицах, находятся под контролем механизма параллельного доступа. Хотя хранить большие документы вполне возможно, не забывайте, что при любом изменении устанавливается блокировка всей строки (на уровне строки). Поэтому для оптимизации блокировок транзакций, изменяющих данные, стоит ограничить размер документов JSON разумными пределами. В идеале каждый документ JSON должен собой представлять атомарный информационный блок, который, согласно бизнес-логике, нельзя разделить на меньшие, индивидуально изменяемые блоки.

Fike
12.09.2018
16:02:06
стоит ограничить размер документов JSON разумными пределами.

Ilya
12.09.2018
16:02:08
Ты хочешь хранить весь форум в одной строчке? :)

Fike
12.09.2018
16:02:18
это ты предлагаешь все комментарии к посту сохранять

а я тебя все пытаюсть наставить на путь истинный

Ilya
12.09.2018
16:03:03
это ты предлагаешь все комментарии к посту сохранять
Ты не читаешь переписку, Дмитрий хотел такую схему в качестве примера Карл, а я просто пример кинул.

Dmitry
12.09.2018
16:03:16
бгггг сам иди читай > Данные JSON, как и данные любых других типов, хранящиеся в таблицах, находятся под контролем механизма параллельного доступа. Хотя хранить большие документы вполне возможно, не забывайте, что при любом изменении устанавливается блокировка всей строки (на уровне строки). Поэтому для оптимизации блокировок транзакций, изменяющих данные, стоит ограничить размер документов JSON разумными пределами. В идеале каждый документ JSON должен собой представлять атомарный информационный блок, который, согласно бизнес-логике, нельзя разделить на меньшие, индивидуально изменяемые блоки.
Это не проблема. Обычно JSON хранилище нужно для таких задач. Есть данные, они постоянно приходят. Но что с ними делать еще не знаем. Когда узнаем - прикрутим индекс. Поэтому такие данные обычно неизменяемые. Если же хранить текущий баланс клиента в JSON - то да, это плохое решение

Ilya
12.09.2018
16:03:17
Тобишь тот запрос - сферический запрос в вакууме.

Fike
12.09.2018
16:04:09
то есть тебе ок хранить записи по несколько мегабайт и вытаскивать все комментарии для условной рсс?

Ilya
12.09.2018
16:05:15
то есть тебе ок хранить записи по несколько мегабайт и вытаскивать все комментарии для условной рсс?
Вопрос ко мне? К Дмитрию? Я должен ещё раз объяснять что тот пример был - сферическим? :)

Fike
12.09.2018
16:06:06
Вопрос ко мне? К Дмитрию? Я должен ещё раз объяснять что тот пример был - сферическим? :)
тебе еще раз форварднуть то место, где ты сказал, что записи по несколько мегабайт - это ок?

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

Google
Dmitry
12.09.2018
16:06:34
то есть тебе ок хранить записи по несколько мегабайт и вытаскивать все комментарии для условной рсс?
Ок. Тогда более приближенная задача. С датчиков приходит 10 разных событий. У каждого типа свой набор полей. События нужно как и вместе агрегировать, так и по специализированным полям. Есть 3 варианта: 1) Одну таблицу и куча пустых полей 2) Одну таблицу с общими данными и 10 таблиц с специализированными данными 3) Одну таблицу с JSON и индексам по них. Какой вариант тебе ближе?

Fike
12.09.2018
16:07:58
Я бы начал с того, что посмотрел что вообще в time series сейчас есть, вместо того, чтобы прикручивать базу с MVCC к неизменяемым данным

Fike
12.09.2018
16:10:44
если у вас редкие аналитические запросы и нет проблем с пробелами в каких-то данных в случае крэша - да хоть в файл кидать и раз в сутки в облако кидать, и то дешевле получится

Dmitry
12.09.2018
16:12:52
Ну тут разные данные. Данные клиентов терять нельзя, поэтому что-то меганадежное нужно. А свой мониторинг за день можно и потерять если что-то большое сломается

Admin
ERROR: S client not available

Fike
12.09.2018
16:13:41
в общем тащить типовое хранилище под append-only нагрузку это прям скажем так себе идея

Dmitry
12.09.2018
16:15:51
Мы те данные которые хорошо структурированы и как правило повторяются в каждой строке - сделали простыми колонками, а всё что изредка появляется и непонятно что - залили в json колонку.
Вот кстати хороший пример. Если структура не меняется. А как postgres c изменениями формата данных справляется? Например было у меня поле INT(10), а потом понадобилось его расширить под INT(20) так как в страну вышли со странными суммами. MySQL от этого с ума сходит на несколько часов.

Al
12.09.2018
16:18:26
Мой процесс поместился в чуть больше 1к строк на жабе

Dmitry
12.09.2018
16:19:09
Нет таких процессов.
Да ладно. Клиент отчет за год попросит отчет с разрезом по месяцам и пошла база складывать миллион записей

Google
Dmitry
12.09.2018
16:19:47
эм, дорого что?
Сеть, CPU процесса, память процесса. Да и задержка большая - отдать млн строк

Значит проектировщик дебил
Если клиент платит то почему бы и нет

Dmitry
12.09.2018
16:20:49
А json причем
Это был ответ на эту цитату » Агрегация это функция приложения а не базы

Dmitry
12.09.2018
16:22:39
Ладно, Объясни что ты имел ввиду под фразой "Агрегация это функция приложения а не базы"? Почему это должен делать серверный процесс, а не база?

Fike
12.09.2018
16:24:01
Al
12.09.2018
16:24:28
Ладно, Объясни что ты имел ввиду под фразой "Агрегация это функция приложения а не базы"? Почему это должен делать серверный процесс, а не база?
Твои данные которые приходят нужно раскладывать согласно твоей архитектуры что бы не получалось ситуаций когда нужно миллионы строк складывать или отдаэвать

Dmitry
12.09.2018
16:25:26
Имеешь ввиду предварительно агрегировать на более большие сегменты?

Ilya
12.09.2018
16:32:47
Все еще не ясно зачем json
Не нужен json. Согласен. Давай писать на java свою СУБД.

Al
12.09.2018
16:34:54
Не нужен json. Согласен. Давай писать на java свою СУБД.
Зачем? Тебе имеющизся мало? Кассандра шикарна например

Ilya
12.09.2018
16:35:10
Кассандра? Отлично!

Страница 653 из 718