
Art
27.12.2016
19:18:39
postico ftw

Wom
27.12.2016
19:19:49
это что?

Аггей
27.12.2016
19:31:30

Wom
27.12.2016
19:32:23
сильно?

Google

Alexander
27.12.2016
19:33:27
никто не знает или я спросил слишком глупый вопрос? ?

Аггей
27.12.2016
19:33:38
Параметр очень влияет на скорость построения больших индексов. У меня на 24 гигах ram при обслуживании сервера - 8гб выставлено. Зависит от размера индекса

Wom
27.12.2016
19:34:11
Можно выставить много, развернуть, а потом снизить?

Аггей
27.12.2016
19:34:20
Я так и делаю

Wom
27.12.2016
19:34:27
спасибо

Ildar
27.12.2016
19:37:39

Alexander
27.12.2016
19:38:05
с такими проблемами больше проблем не будет (чем с остальными таблицами, которые наследуются только от одной таблицы)?

Dmitrii
27.12.2016
19:39:42
Я не очень понял зачем тебе вообще наследование. 99.99% случаев оно тебе не нужно

Alexander
27.12.2016
19:40:18
ну, например, если нужна связь одной таблицы с одной из трёх других
ты делаешь эту связь с базовой таблицей и получается обычная связь как бы, а те, которые наследуются, включают поля, которые отличаются у этих трёх таблиц
ну вот в примере выше - таблица sftp_connections наследуется от ssh_based_connections, которая наследуется от connections

Google

Dmitrii
27.12.2016
19:42:07
b.parent_id, c.parent_id, a.id — вот тебе без наследования.
+ я не совсем уверен, что ты понимаешь, что id во всех3 таблицах будет сквозной.
Это реально не всегда подходит, даже когда тебе "типа"надо наследование

Alexander
27.12.2016
19:43:14
так это и хорошо, это позволяет связать с подключением что угодно как если бы это была 1 таблица

Ildar
27.12.2016
19:43:40
т.к. в постгресе нет глобального индекса для иерархии таблиц

Dmitrii
27.12.2016
19:44:12
Короче, я так скажу, я долго исследовал этот вопрос и мы решили у себя это не использовать от греха подальше
Сделали через обычные ключи

Alexander
27.12.2016
19:49:01


Anufant
27.12.2016
19:51:40
Привет. Есть небольшая постгрес база. Периодически на ней одним хорошим человеком выполняются различные скрипты, которые прилетают от веб-разработчиков. Скрипты могут как править определение данных так и сами данные. Хочется все это положить в гит, но при этом чтобы было легко отслеживать все изменения в схеме, то есть просто засовывать всё входящее - не подходит.
Мне приходит на ум два варианта:
1) к каждому скрипту прилагать файл или несколько с изменениями схемы, которые вносит исполняемый скрипт. Но это мягко выражаясь не удобно
2) Замутить какой нибудь хук, который после коммита выполнит скрипт, найдет изменения в структуре базы и сделает из этого дополнение к коммиту. Это удобно, но как-то стремновато совсем, скрипты автоматически выполнять :)
Вот такая проблема. Подскажите, пожалуйста, может это и не проблема и я все надумал? Или все же проблема и для нее есть нормальное решение :)
Фух, аж устал с телефона писать :)


Dmitrii
27.12.2016
19:51:44
Да. Они уже связаны

Alexander
27.12.2016
19:54:58
а вариант с отдельными таблицами вообще чем-то лучше, чем 1 большая таблица с неиспользуемыми полями? (просто было бы удобно иметь общий ID на все типы подключений)


Anton
27.12.2016
19:55:32
Привет. Есть небольшая постгрес база. Периодически на ней одним хорошим человеком выполняются различные скрипты, которые прилетают от веб-разработчиков. Скрипты могут как править определение данных так и сами данные. Хочется все это положить в гит, но при этом чтобы было легко отслеживать все изменения в схеме, то есть просто засовывать всё входящее - не подходит.
Мне приходит на ум два варианта:
1) к каждому скрипту прилагать файл или несколько с изменениями схемы, которые вносит исполняемый скрипт. Но это мягко выражаясь не удобно
2) Замутить какой нибудь хук, который после коммита выполнит скрипт, найдет изменения в структуре базы и сделает из этого дополнение к коммиту. Это удобно, но как-то стремновато совсем, скрипты автоматически выполнять :)
Вот такая проблема. Подскажите, пожалуйста, может это и не проблема и я все надумал? Или все же проблема и для нее есть нормальное решение :)
Фух, аж устал с телефона писать :)
мож ваще не в кассу, но глянь на http://www.liquibase.org/ может ваш кейс


Alexander
27.12.2016
19:55:46
то есть если вместо наследования таблиц просто сделать 1 большую таблицу

Fike
27.12.2016
19:56:09

Anton
27.12.2016
19:56:28

Fike
27.12.2016
19:57:36
не знаю, если честно

Ildar
27.12.2016
19:57:37
то есть если у меня есть А, наследующаяся от Б, наследующаяся от В, то я не должен хотеть связывать А с другой Б?
нет, я имел в виду, что если есть некая отдельная Г, которая ссылается на некий ключ из A, то с этим могут быть проблемы. Например, в А, Б и В есть ключ id (наследуется из А). Г ссылается на ключ A.id (пусть будет Г.a_id). Вставляем в Б запись с id = 1. Теперь хотим вставить в Г запись a_id = 1 и получаем облом - нарушение целостности, т.к. в A этого ключа нет
хотя, например, 'select id from A' вернет запись с id=1

Anufant
27.12.2016
19:59:37

Google

Alexander
27.12.2016
20:00:12
а, понял.. но это вручную контроллируется и мы точно уверены, что такое не случится, то каких-либо других проблем нет?.. на производительность такое множественное наследование сильно влияет?

Ildar
27.12.2016
20:05:56

Alexander
27.12.2016
20:06:51
понял, а вот все эти вещи типа партиционирование / репликация / шардинг - это всё с такими таблицами ок работает?

Ildar
27.12.2016
20:08:06
репликация работает. Партиционирование - смотря как сделаете, оно ведь тоже на наследовании : )
по идее будет работать. Нужно только проверить, как работают экстеншены для партиционирования, если вы их планируете использовать
могу завтра на pg_pathman попробовать

Alexander
27.12.2016
20:15:13
спасибо) конкретно сейчас мне достаточно просто 1 базы данных на 1 сервере, это, скорее, на всякий случай спросил, чтобы оценить, какие проблемы могут возникнуть, если вдруг такое понадобится (а такое может понадобиться в будущем)

Ildar
27.12.2016
20:16:47

Alexander
27.12.2016
20:20:25
а вот это решение с наследованием - его стоит принять в начале пути при проектировании или же в будущем, если ошибся и уже много данных в таблице, всё же получится исправить ошибку?
насколько велика цена ошибки в данном случае?
то есть если сделать наследование и потом вдруг окажется, что нужно поменять на другой вариант - насколько сложно будет всё это переделать, когда в таблицах уже куча данных?

Ildar
27.12.2016
20:22:20
а какого порядка куча?
вообще от приложения зависит, насколько сложно его будет потом адаптировать

Alexander
27.12.2016
20:23:38
ну, не такая уж большая, если честно) в пределах 100 тысяч кортежей
я ступил тут... да, всё можно переделать, просто не менять, а делать новые таблицы, переносить туда и удалять старые

Ildar
27.12.2016
20:28:00
с наследованием еще такая проблема, что если вдруг придется переносить (как бы антипатриотично это ни звучало) на другую субд, то вряд ли там будет аналог : )

Alexander
27.12.2016
20:29:51
речь ведь про NoSQL?
или есть поводы переносить на другие SQL?

Fike
27.12.2016
20:30:24
статьяуберапромускул.хтмл

Alexander
27.12.2016
20:30:41
эх, я думал, Postgres тут лучшая и всех рвёт ?

Google

Ildar
27.12.2016
20:32:08

Fike
27.12.2016
20:33:19
Если серьезно, то разные штуки бывают. Однажды пришлось переезжать с постгре на мускул, потому что нужно было перетащить микросервис в другой проект, и там особо средств не было, чтобы иначе это организовать.

Darafei
27.12.2016
20:34:04

Dmitrii
27.12.2016
20:34:33
Уверен?

Darafei
27.12.2016
20:35:14
ну, мои - чинят

Fike
27.12.2016
20:36:17
у меня тоже был опыт, когда джетбрейнсы за пару дней починили мой репорт

Darafei
27.12.2016
20:38:51
хотя, посмотрел, из моих 26 репортов починили 12
основная часть непочиненных "вот тут форматтер ведёт себя не очень"

Dmitrii
27.12.2016
20:42:34
Запилил репорт им

Darafei
27.12.2016
20:46:37
полайкал

Alexander
27.12.2016
20:48:21
ещё вместо наследования, наверное, можно сделать 1 таблицу и туда вставить поле с типом hstore

Darafei
27.12.2016
20:53:00
эмм, 2016, скоро 2017, hstore?

Pavel
27.12.2016
20:53:48
Да, 1 таблицу с 1 полем jsonb и все там хранить.

Akzhan
27.12.2016
20:54:03
выбор хранилища зависит от производительности. так что пусть хоть ',' +join(',', @ids) + ','

Pavel
27.12.2016
20:59:28
Хм? Это какое-то очень троллинговое утверждение

Akzhan
27.12.2016
21:00:50
это типичный вариант хранения массива ids с поиском по оным. к postgres слабо относится.

Pavel
27.12.2016
21:01:39
> выбор хранилища зависит от производительности.
я имею в виду вот это утверждение и его общность

Akzhan
27.12.2016
21:02:36
флаг в руки и барабан на шею, хотя, вероятно, я могу быть неправ. но история говорит, что производительность СУБД - ключевой фактор.

Pavel
27.12.2016
21:03:40
Просто сейчас почти у всех популярных "хранилищ" интервал производительности охватывает типичный проект. И нету между ними особой разницы.

Google

Akzhan
27.12.2016
21:03:40
это помимо остальных свойств СУБД. речь о выборе техник внутри технологии
тут я промолчу.

Pavel
27.12.2016
21:04:59
Самое быстрое хранилище - это memcache )

Akzhan
27.12.2016
21:05:30
"внутри технологии" - подразумевало ACID etc.

Darafei
27.12.2016
21:05:31

Roman
27.12.2016
21:06:41

Pavel
27.12.2016
21:07:22
Оно от этого факта медленнее не стало

Fike
27.12.2016
21:08:07
ок, в чем мы измеряем скорость? во времени, потраченном на единственную запись?

Akzhan
27.12.2016
21:09:31
пипл, не та группа.
но если оффтопить, - memcached хорош.
просто он мало что умеет.
P.S.: для всех memstore обычно вся задержка чтения/записи = сетевая )
я люблю redis, хотя он типа тоже устарел )

Pavel
27.12.2016
21:12:10
"устарел" - вообще какой-то сферический термин
Как и "производительность"

Fike
27.12.2016
21:13:24
как и "самое быстрое хранилище"

Yevhen
27.12.2016
21:13:31
Есть смысл переходить с мускуль на постгрес, или наоборот, если размер базы в раене гигабайт?

Akzhan
27.12.2016
21:13:38
я знаю правильный термин - немодный )

Yevhen
27.12.2016
21:13:59
Или оценивать нужно по другому критерию?

Fike
27.12.2016
21:14:01

Akzhan
27.12.2016
21:14:15

Yevhen
27.12.2016
21:14:26
Желанием разработчика

Fike
27.12.2016
21:14:42
если он никак это не аргументирует, то вряд ли