@pgsql

Страница 791 из 1062
Dmitry
04.05.2018
18:19:12
А, намёк понял.

Vladimir
04.05.2018
18:20:28
А, намёк понял.
Возможно, про это стоит делать доклад… Но PgDay не будет этим летом, а PgConf через год (если будет)

Dmitry
04.05.2018
18:20:30
Но нет, тут этого нет. последующие запросы с никак не связанными id.

Google
Vladimir
04.05.2018
18:21:01
Dmitry
04.05.2018
18:21:10
да

Vladimir
04.05.2018
18:21:20
Оптимизатор разве не научился переставлять аргументы?
Вопрос не в оптимизаторе, а в том, что будет разное количество дисковых операций при обращении к индексам. Особенно в случае index only scan

Vladimir
04.05.2018
18:37:04
Вы не могли бы пояснить, о чём именно речь?
Попробую на пальцах. Данные в индексе хранятся блоками по 8 килобайт. Если базе нужна лишь одна строка, то всё равно загружается весь блок. В наших интересах сделать так, чтобы в загружаемом блоке нужными оказались _все_ строки, а не какая-то одна. Допустим, в таблице (a,b) находятся такие записи: (1,1) (1,2) (1,3) (1,4) (2,1) (2,2) (2,3) (2,4) Допустим, в индексный блок помещается лишь 2 записи (в реальности, конечно, в 8кб помещается штук 50-100, но суть это не меняет) Допустим, запрашиваться будут данные по a=1 and b in (1,2,3,4) Индекс (a,b) будет выглядеть следующим образом: блок1: (1,1) (1,2) блок2: (1,3) (1,4) блок3: (2,1) (2,2) блок4: (2,3) (2,4) Запрос (один через in или 4 раздельных) в конечном итоге загрузят блок1 и блок2. Т.е. мы загрузили 2 блока данных с диска, и в них оказались нужные нам строки. Индекс (b,a) будет выглядеть по-другому (самый простой способ понять, это представить как будет выглядеть результат order by b,a ) блок1: (1,1) (2,1) блок2: (1,2) (2,2) блок3: (1,3) (2,3) блок4: (1,4) (2,4) Для загрузки нужных нам четырёх строк придётся загрузить все 4 блока. В каждом будет одна нужная строка, и одна ненужная. Получается, что при таких входных данных индекс (b,a) будет требовать больше места в buffer cache, он будет хуже работать после перезагрузок (ну или подобных действий, когда сбрасывается кэш). Хотя, «в среднем по больнице», колонка b более селективная и «вроде как она должна быть 1-ой в индексе»

Yaroslav
04.05.2018
18:49:15
Попробую на пальцах. Данные в индексе хранятся блоками по 8 килобайт. Если базе нужна лишь одна строка, то всё равно загружается весь блок. В наших интересах сделать так, чтобы в загружаемом блоке нужными оказались _все_ строки, а не какая-то одна. Допустим, в таблице (a,b) находятся такие записи: (1,1) (1,2) (1,3) (1,4) (2,1) (2,2) (2,3) (2,4) Допустим, в индексный блок помещается лишь 2 записи (в реальности, конечно, в 8кб помещается штук 50-100, но суть это не меняет) Допустим, запрашиваться будут данные по a=1 and b in (1,2,3,4) Индекс (a,b) будет выглядеть следующим образом: блок1: (1,1) (1,2) блок2: (1,3) (1,4) блок3: (2,1) (2,2) блок4: (2,3) (2,4) Запрос (один через in или 4 раздельных) в конечном итоге загрузят блок1 и блок2. Т.е. мы загрузили 2 блока данных с диска, и в них оказались нужные нам строки. Индекс (b,a) будет выглядеть по-другому (самый простой способ понять, это представить как будет выглядеть результат order by b,a ) блок1: (1,1) (2,1) блок2: (1,2) (2,2) блок3: (1,3) (2,3) блок4: (1,4) (2,4) Для загрузки нужных нам четырёх строк придётся загрузить все 4 блока. В каждом будет одна нужная строка, и одна ненужная. Получается, что при таких входных данных индекс (b,a) будет требовать больше места в buffer cache, он будет хуже работать после перезагрузок (ну или подобных действий, когда сбрасывается кэш). Хотя, «в среднем по больнице», колонка b более селективная и «вроде как она должна быть 1-ой в индексе»
А, понял, спасибо. Но, всё же, «в среднем по больнице» при создании индексов под запросы " WHERE a = 'x' AND b = 'y' " считается, что 'x' / 'y' независимы. Если это не так, то, конечно, описанным вами способом можно выиграть в производительности.

Vladimir
04.05.2018
19:12:29
А, понял, спасибо. Но, всё же, «в среднем по больнице» при создании индексов под запросы " WHERE a = 'x' AND b = 'y' " считается, что 'x' / 'y' независимы. Если это не так, то, конечно, описанным вами способом можно выиграть в производительности.
Немного позанудствую: «'x' / 'y' независимы» вопрос не в зависимости-независимости, а в том, какое пространственно-временное распределение имеют входные параметры. Я, например, нечасто сталкивался с полностью равномерными распределениями. Обычно всё-таки есть перекос (не только в самих данных, но и в параметрах). И наоборот: при нагрузочном тестировании оказывается, что использовать равномерное распределение для всех данных противопоказано. Например, распределение имён и фамилий далеко не равномерное. Получить много «Ивановых Иванов Ивановичей» одним random’ом тяжело, а на практике такая комбинация сплошь и рядом.

Yaroslav
04.05.2018
19:21:03
Немного позанудствую: «'x' / 'y' независимы» вопрос не в зависимости-независимости, а в том, какое пространственно-временное распределение имеют входные параметры. Я, например, нечасто сталкивался с полностью равномерными распределениями. Обычно всё-таки есть перекос (не только в самих данных, но и в параметрах). И наоборот: при нагрузочном тестировании оказывается, что использовать равномерное распределение для всех данных противопоказано. Например, распределение имён и фамилий далеко не равномерное. Получить много «Ивановых Иванов Ивановичей» одним random’ом тяжело, а на практике такая комбинация сплошь и рядом.
Всё это верно... но когда я вижу, что кто-то тратит время на раздумья о распределении параметров (не данных!), мне сразу начинает казаться, что этот кто-то занимается преждевременной оптимизацией. ;) А с корреляциями в данных мало что можно сделать в PostgreSQL, на данный момент. Да и вообще, это объективно трудно. Да, в большинстве случаев в данных есть корреляции между атрибутами, и предположение независимого распределения очевидно неверно... но на вопрос, что использовать вместо него, этот факт не отвечает. ;(

Mike Chuguniy
05.05.2018
09:45:37
Что это было?!

Stepan
05.05.2018
09:46:10
Прошу прощения, залипло

Google
Sergey
05.05.2018
10:29:44


Айтуар
05.05.2018
10:41:36
Удаляй всё. Они не нужны уже раз ты спрашиваешь. ??

Sergey
05.05.2018
10:41:51
а что это за файлы

в гугл не нашел обьяснения

толкового

Константин
05.05.2018
10:42:09
Всем привет. Вопрос не по PostgreSQL, a по NoSQL. Требуется хранить информацию о прохождении обследования пациентом. Одно обследование несет в себе информацию объемом более 1000 строк. Если использовать реляционную БД, то я думаю правильней будет хранить путь к файлу с данной информацией. Но тут предложили использовать NoSQL, но я в этой теме слабо обучен, поэтому хочу спросить. Стоит ли для этой задачи использовать NoSQL, или нет?

Константин
05.05.2018
10:44:07
1000 строк, а в каждой строке что?
Данные измерений пульса, частоты сердца и т.д.

Айтуар
05.05.2018
10:47:14
Ну такие числовые данные (метрики) можно хранить по разному. Всё зависит уже от того для чего будешь хранить - графики потом строить как в графане например или ещё что. Или может поиск делать и отчёты чтобы по анализам искать закономерности.

Константин
05.05.2018
10:49:23
Это вас сурово как-то обманули. Результаты медицинских обследований вполне себе укладываются в реляционную модель, и соответственно - в реляционную СУБД.
А не просветите: в каких случаях тогда полезно использовать NoSQL, а то многие говорят что она почти всегда лучше

Айтуар
05.05.2018
10:50:06
Будет и отчет и графики
Ну всё зависит от объёмов. На несколько сотен тысяч обследований нормально, после нескольких миллионов начнуться проблемы.

Mike Chuguniy
05.05.2018
10:51:14
А не просветите: в каких случаях тогда полезно использовать NoSQL, а то многие говорят что она почти всегда лучше
Я не знаю, где лучше использовать NoSQL. Все решения, которые я видел лично, обусловлены были: модно, задорно, молодёжно. Ну и чтоб админ не спал, а замордовался всё это Носкульное гАвнище обслуживать. Как сейчас с эксплуатацией носкулей - не скажу, не знаю. Да и знать, если честно, большим желанием не горю.

Константин
05.05.2018
10:51:35
Ну всё зависит от объёмов. На несколько сотен тысяч обследований нормально, после нескольких миллионов начнуться проблемы.
Сотен тысяч обследований - это если в БД хранить путь до файла обследования или если хранить всю информацию файла непосредственно в БД?

Mike Chuguniy
05.05.2018
10:52:41
Ну вот где местные медики, когда они так нужны?! (местные медики - это тут есть люди, которые делают и обслуживают БД для медицины)

Константин
05.05.2018
10:54:20
Ну вот где местные медики, когда они так нужны?! (местные медики - это тут есть люди, которые делают и обслуживают БД для медицины)
На сколько я понял, то когда мне советовали использовать NoSQL, то предлагали хранить все данные обследования непосредственно в БД, без отдельных файло

Google
Mike Chuguniy
05.05.2018
10:54:29
Он? Моя память налево пошла? Но по-моему, тут далеко не один в медицине.

Arthur
05.05.2018
10:55:20
а что это за файлы
https://www.postgresql.org/docs/current/static/storage-file-layout.html

Mike Chuguniy
05.05.2018
10:57:02
На сколько я понял, то когда мне советовали использовать NoSQL, то предлагали хранить все данные обследования непосредственно в БД, без отдельных файло
Не надо результаты хранить в где попало. Оно прекрасно себя будет чувствовать в РСУБД. И гарантированно лучше, как по поиску, так и по обновлению. Единственное, что приходит в голову - это "шардить" результаты по объекту исследований: т.е. кровь, отдельно, моча - отдельно, ЖКТ - отдельно, нервы - опять же отдельно.

Айтуар
05.05.2018
10:57:53
Он? Моя память налево пошла? Но по-моему, тут далеко не один в медицине.
Ну у меня в знакомых только один. А он уже ушёл из группы. Видимо уже не в медицине.

Dmitri
05.05.2018
10:57:56
Mike Chuguniy
05.05.2018
10:57:58
А у вас, судя по всему, всё будет свалено в одну кучу.

Айтуар
05.05.2018
10:59:43
На сколько я понял, то когда мне советовали использовать NoSQL, то предлагали хранить все данные обследования непосредственно в БД, без отдельных файло
Ну попробуйте хранить в БД сами файлы типа картинок. Потом расскажите как у вас распухла БД и почему все запросы стали медленее и т.п.

Mike Chuguniy
05.05.2018
11:14:39
А картинки - в отказоустойчивый сторадж. И телемаркет!

Миша
05.05.2018
11:14:59
Всем привет. Как вы относитесь к предлогам в названии полей таблицы?

Константин
05.05.2018
11:26:12
Ну попробуйте хранить в БД сами файлы типа картинок. Потом расскажите как у вас распухла БД и почему все запросы стали медленее и т.п.
Я прекрасно понимаю что хранить данные из файлов в бд - это плохая идея. Но я это сказал к тому, что мне посоветовали использовать nosql, для хранения этой информации в бд, вот я и подумал, что nosql не разбухает от этого

Константин
05.05.2018
11:27:43
А за счет какой магии тогда работает nosql?
Я и не знаю)) Поэтому и спрашиваю тут, как лучше поступить)

Shaz
05.05.2018
11:29:58
Я и не знаю)) Поэтому и спрашиваю тут, как лучше поступить)
Взять и потестить. нагенерить файла по идее не большая проблема.

Константин
05.05.2018
11:31:54
Взять и потестить. нагенерить файла по идее не большая проблема.
Проблема небольшая, интересно было узнать как работает NoSQL, потому что посмотрел по интернету: все хвалят и советуют его использовать

Shaz
05.05.2018
11:34:47
Проблема небольшая, интересно было узнать как работает NoSQL, потому что посмотрел по интернету: все хвалят и советуют его использовать
Угу. а по факту - учитывая задачу, я бы вобще посмотрел в сторону чего-то поддерживающего s3-api. И валил все файло туда.

Darafei
05.05.2018
11:37:54
Amir
05.05.2018
13:55:36
Есть два больших проекта, один целиком медицина, другой результаты и там записей на лярд. Все вполне укладывается в реляционную модель и у нас pg.

Есть и вакансии в команду dba, по обслуживанию centsos, бд, tomcat. г. Казань.

Google
Anton [Mgn, az09@osm]
05.05.2018
19:42:24
Есть и вакансии в команду dba, по обслуживанию centsos, бд, tomcat. г. Казань.
Позавчера ещё могли встретиться но уже уехал. Просто ради интереса)

Yuriy
05.05.2018
19:45:58
Ребята, по кластерам pg спецы тут есть?

Собственно интересует, кто пробовал поднимать мультимастер на 2 нодах, на возможностях из коробки, поделитесь опытом

Denis
05.05.2018
23:20:11
Я прекрасно понимаю что хранить данные из файлов в бд - это плохая идея. Но я это сказал к тому, что мне посоветовали использовать nosql, для хранения этой информации в бд, вот я и подумал, что nosql не разбухает от этого
А какого рода медицинские результаты вы получаете, что возникает задача хранить файлы изображений? В диагностике обычно это dicom, так возьмите уже готовый pacs и работайте с ним по api (ну или саму на каком-то опенсорсном движке напишите свой и 100500 раз отстрелите себе ногу). Если это показатели для протокола в карте пациента, то там большая часть залазит в реляционную схему (а кто не поместился - в json). Протоколы лучше генерировать на сервере (а не хранить), если у вас все норм с языком разметки (для типографической точности можете в латехе пострадать, например). Самый главный вопрос - будете ли вы потом по этим показателям искать или строить отчеты? Если будете, то nosql вам точно не зайдёт.

Denis
06.05.2018
05:26:43
Egor
06.05.2018
05:31:36
Нет, не один. Добро пожаловать в клуб)
А еще у нас было все на mssql -_-

Oleg
06.05.2018
05:51:41


Dmitry
06.05.2018
06:00:31
Это Катманду?

Oleg
06.05.2018
06:00:52
Да

Тьфу, не туда запостил.

HW_51Rs
06.05.2018
10:25:58
С чем может быть связана такая ошибка: 'utf8' codec can't decode byte 0xc2 in position 0: invalid continuation byte - при добавлении сервера? Помогите, пожалуйста.

Darafei
06.05.2018
10:27:33
c тем, что некий питонячий софт посередине не умеет кириллицу

HW_51Rs
06.05.2018
10:28:32
Darafei
06.05.2018
10:28:52
в полях чего?

Google
HW_51Rs
06.05.2018
10:29:09
PgAdmin4

Darafei
06.05.2018
10:29:58
какая ОС?

HW_51Rs
06.05.2018
10:30:24
какая ОС?
Windows 7. Это домашний компьютер.

Darafei
06.05.2018
10:30:32
нет ли кириллицы в путях, например, в имени пользователя? :)

Страница 791 из 1062