
Anton [Mgn, az09@osm]
23.07.2017
10:47:30

Артур
23.07.2017
10:48:42

Anton [Mgn, az09@osm]
23.07.2017
11:46:18

Aleksander
24.07.2017
06:12:07
Привет всем, а у кого-нибудь в проектах есть Postgres с таблицами от 3 миллиардов записей?

Google

Darafei
24.07.2017
06:17:44
3991181109 подойдёт?

عاصم بن حارث
24.07.2017
06:18:15

Darafei
24.07.2017
06:20:15
там ещё рядом табличка лежит, в которую один юзер вставил 326511847 строк

Aleksander
24.07.2017
06:24:41
3991181109 подойдёт?
Нормас :) скажи, как постгрес справляется с таблицами таких размеров ? Есть ли у тебя индексы на ней дополнительные и долго ли происходит вставка ?

Darafei
24.07.2017
06:25:05
оно не у меня, оно на api.openstreetmap.org
там есть индексы по id, и кастомный не-постгисовый по геометрии
всё работает нормально

Aleksander
24.07.2017
06:27:09
всё работает нормально
Я просто думаю как лучше сделать, одну большую таблицу или n маленьких таблиц и на вставку поставить триггер

Darafei
24.07.2017
06:27:15
партиционирований и тому подобного нет
триггер точно всё притормозит

Aleksander
24.07.2017
06:29:19
Да но и индекс при вставке тоже отожрет в большую таблу

Ilya
24.07.2017
06:30:07

Darafei
24.07.2017
06:30:11
а почему сумма размеров индексов по маленьким таблицам будет меньше размера одного индекса по суммарной таблице?

Google

Aleksander
24.07.2017
06:30:49

Ilya
24.07.2017
06:30:53
Как по мне - если записей неимоверно много лучше сделать партицирование. Если кто-то боится триггеров - вынести выбор партиции в приложение

Darafei
24.07.2017
06:32:24
https://github.com/postgrespro/pg_pathman

Aleksander
24.07.2017
06:32:41

Darafei
24.07.2017
06:32:53
если идёт аппенд, то непонятно, чем партиции будут лучше

Ilya
24.07.2017
06:34:14
А по твоему опыту триггеры как?
Настроил и забыл. Это иногда доставляло проблемы, но скорее после того как окунался в код после перерыва. А так в целом удобно.

Darafei
24.07.2017
06:35:19
партиции удобны, когда нужно внезапно резко стереть чанк данных в размере партиции

Aleksander
24.07.2017
06:35:27
Удалений скорее всего нет, но есть апдейты частые
Но это ещё не самые мощные таблицы, рядом будет стоять кликхаус в котором по триллиону записей в табле
Но там совсем другая история
Чувствую, я как всегда спроектирую и все развалится :)

Anton [Mgn, az09@osm]
24.07.2017
06:42:38
@Komzpa @pasha_golub #report #spam

Pavel
24.07.2017
07:26:48

Anton [Mgn, az09@osm]
24.07.2017
07:28:50

Pavel
24.07.2017
07:29:16
Давно ее прибили. Я лично

Anton [Mgn, az09@osm]
24.07.2017
07:29:36
Айфонопроблемы значит

Subb98
24.07.2017
07:49:21
Привет, подскажите, как можно сделать update from select нескольких полей, для каждого поля при этом в select должен быть свой where. Такое вообще возможно?

Google

Subb98
24.07.2017
07:51:01
Пример: есть update за месяц, год и всё время (это и есть where)
И есть поля с мес., годом и всем временем.

Vadim
24.07.2017
07:51:20
несколько апдейтов

Subb98
24.07.2017
07:51:32
А если одним?
Несколько уже есть.
Сказали, мол, можно одним

Anton [Mgn, az09@osm]
24.07.2017
07:53:53
Несколько селектов. Подзапросы

Subb98
24.07.2017
07:54:10
Спасибо, попробую.

Darafei
24.07.2017
08:32:32
Расскажи
http://www.openstreetmap.org/stats/data_stats.html

Anton [Mgn, az09@osm]
24.07.2017
08:33:27
Но тоже впечатляет конечно

Slach
24.07.2017
11:14:31

Dmitry
24.07.2017
11:21:35

Alexey
24.07.2017
11:29:04
тут кто-то интересовался расценками на солидный постгрес для солидных господ. @vladimir_lyshenko ? так вот: http://www.1csoft.ru/publications/8143/23901658/?ELEMENT_ID=23901658
из той ссылки следует, что enterprise можно купить только пожизненно всего за 360 000 рублей за ядро. а версии 1С и standard можно купить с поддержкой на ограниченный срок

Dmitry
24.07.2017
11:34:00
но судя по всему 1с гарантирует работу только с EE версией

Darafei
24.07.2017
11:34:22
а что будет, если купить на 1 ядро, а запустить на 100-ядерной машине?

Dmitry
24.07.2017
11:34:50
как у оракла - все на честном слове

dmitriy
24.07.2017
11:34:52

Dmitry
24.07.2017
11:35:33
а это bgworker?

Google

Dmitry
24.07.2017
11:36:16
он в yum.postgresql.org есть?

dmitriy
24.07.2017
11:36:23

Admin
ERROR: S client not available

Dmitry
24.07.2017
11:37:13
он в yum.postgresql.org есть?
в смысле его прийдется еще опакечивать и собирать, обновлять и менять конфиг :) а тут сторонний сервис который с работает с ванильным/любым pg как обычный клиент

dmitriy
24.07.2017
11:42:16
если вы пг сами компилите, то можете прям в контриб чекаутить его и собирать с ним, можно через PGXS компилить

Dmitry
24.07.2017
11:43:12
на проде где gcc не должно стоять? :)

dmitriy
24.07.2017
11:43:16
ну а так, да, нужно в shared_preload_libraries его добавлять
ну пакеты же вы не на проде собираете

Dmitry
24.07.2017
11:44:00

dmitriy
24.07.2017
11:44:34

Dmitry
24.07.2017
11:44:39
а потом еще и контролировать обновления :(
хотя я понял к чему вы клоните
что собираете свою версию

Anton [Mgn, az09@osm]
24.07.2017
12:00:14

Alexander
24.07.2017
12:47:57
Ребята, здесь выше уже обсуждали партицирование, но хотелось бы задать еще пару вопросов. Допустим, есть большая таблица отношений UNIQUE(a,b). Записи в нее постоянно добавляются, их могут быть миллиарды. Очень часто нужно проверять, существует ли отношение (a, b) или находить всех b для указанного а. А теперь вопрос: есть ли смысл делать партицирование по а (например, по модулю N) для данных задач?
По сути, будет не одна огромная таблица, а N поменьше с теми же индексами. Насколько я понимаю, выиграш будет при чтении, потому что читать индекс конкретной таблицы быстрее, потому что он меньше (собственно, в N раз, если все распределено равномерно).

Aleksander
24.07.2017
12:58:17

Alexander
24.07.2017
12:59:57

Google

Aleksander
24.07.2017
13:07:41
Надо подумать

Ildar
24.07.2017
13:12:18
навскидку 1000-2000 записей в одном узле (если int32). Допустим 1000. Тогда 2 уровня дерева это миллион записей, три уровня - миллиард

Aleksander
24.07.2017
13:12:19

Alexander
24.07.2017
13:14:54

Fike
24.07.2017
13:16:06
я вот прямо горел желанием порекомендовать взять хранилище, которое шардируется из коробки
но кассандра весьма ограничена по сравнению с классическим sql, какие-нибудь агрегации и джойны вы гонять не сможете

Ildar
24.07.2017
13:18:48

Alexander
24.07.2017
13:20:19

Ildar
24.07.2017
13:21:02
выигрыш может быть, например, за счет того, что можно мейнтейнить партиции независимо (вакуумить, например). Или раскидать их по разным тейблспейсам на разных дисках. Ну и обновление маленького индекса (особенно если их несколько) будет происходить быстрее