@pgsql

Страница 206 из 1062
Art
27.12.2016
19:18:39
postico ftw

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

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
Можно выставить много, развернуть, а потом снизить?

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

Alexander
27.12.2016
19:38:05
всмысле таблица C наследуется от B, которая наследуется от A? Может
а это считается нормальным решением или не очень?

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

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
с такими проблемами больше проблем не будет (чем с остальными таблицами, которые наследуются только от одной таблицы)?
проблема может быть, если ссылаешься на родительскую таблицу из других релейшенов (foreign key)

т.к. в постгресе нет глобального индекса для иерархии таблиц

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

Сделали через обычные ключи

Alexander
27.12.2016
19:49:01
проблема может быть, если ссылаешься на родительскую таблицу из других релейшенов (foreign key)
то есть если у меня есть А, наследующаяся от Б, наследующаяся от В, то я не должен хотеть связывать А с другой Б?

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
+ phinx, если у вас PHP основной ЯП
это не тот что баду юзает, не?

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

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

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
а вариант с отдельными таблицами вообще чем-то лучше, чем 1 большая таблица с неиспользуемыми полями? (просто было бы удобно иметь общий ID на все типы подключений)
иногда лучше, особенно если в одной большой таблице много колонок – не нужно читать с диска лишние данные. Следовательно ускоряется чтение, буффер кеш не забивается

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
а вариант с отдельными таблицами вообще чем-то лучше, чем 1 большая таблица с неиспользуемыми полями? (просто было бы удобно иметь общий ID на все типы подключений)
сквозные id-ы можно настроить и для отдельных несвязанных таблиц используя sequence. Но опять же foreign key с такой конфигурацией работать не будут

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

Dmitrii
27.12.2016
20:34:33
багу заведи, они часто сегодня-на-завтра чинят
Баги по PHPStorm у меня висят годами

Уверен?

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
Самое быстрое хранилище - это memcache )
это пока у него на паттерн вытеснения не попадёшь

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
Или оценивать нужно по другому критерию?

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

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

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