|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
Всем доброго дня. Имеется таблица с полями: ид дата метрика значение Жирные - составной первичный ключ. В таблицу в день попадает под 200-300 записей. Сейчас используется PostgreSQL с еженедельным партицированием на основе наследуемых таблиц и кластерными индексами для заверешнных партиций по полям ид и дата . В принципе, работает вполне быстро. Существуют какие-нибудь более интересные варианты? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2017, 16:16 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
G.Collector, трудно сказать, Вы же свои цели не обозначили а Вы что ради 1500 записей делаете новую партицию? я бы только с десятка миллионов начал задумываться ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2017, 17:35 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
SergSuper, простите, ошибся. Имел в виду 200-300 тысяч цели: - регулярные выборки метрик по диапазону дат - регулярные выборки последних N записей для ид->метрики ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2017, 18:09 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
G.Collector, ну как бы тут очевидно что составной первичный индекс не нужен - первичный должен быть только по id и должен быть индекс по date хотя возможно в первичный индекс стоит включить метрику (для второго запроса) если больше никакие поля в запросе не учавствуют ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2017, 18:55 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
G.CollectorВ принципе, работает вполне быстро. Существуют какие-нибудь более интересные варианты? у постгрес 9 по сути нет partitioning, то что они обозвали партишенингом через check constraints + trigger работает. терминами оракла это partitioned views. так что некст левел это будет платная субд с честным партишенингом, а после него что нибудь из бигдаты. в мире DWH модно сейчас исторические данные на hdfs (читай в hadoop) хранить. я бы поставил докер с one node hadoop cluster, дешевого и гарантированно postgres обгонит на такой задачке уже на одном сервере. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 10:16 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
Yo.!, а оно тут надо на таких объемах? я бы например и partitioning даже не делал самое главное же забыл топикстартеру сказать - если оно нормально работает - не трогай ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 10:50 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
Yo.!G.CollectorВ принципе, работает вполне быстро. Существуют какие-нибудь более интересные варианты? у постгрес 9 по сути нет partitioning, то что они обозвали партишенингом через check constraints + trigger работает. терминами оракла это partitioned views.Вы не могли бы пояснить, в чём разница на практике (с Oralce не знаком)? Yo.!так что некст левел это будет платная субд с честным партишенингом, а после него что нибудь из бигдаты.А что такое "честный" partitioning? Yo.!в мире DWH модно сейчас исторические данные на hdfs (читай в hadoop) хранить. я бы поставил докер с one node hadoop cluster, дешевого и гарантированно postgres обгонит на такой задачке уже на одном сервере.Адекватные сравнения можно где-нибудь посмотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 10:53 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
SergSuperа оно тут надо на таких объемах? я бы например и partitioning даже не делал за пару лет 200М+ записей я бы делал, если нет планов через пару лет свалить и переложить ответственность на наследников PgSQLanonymous3Вы не могли бы пояснить, в чём разница на практике (с Oralce не знаком)? в том что у PG все тогда идет через дергание CHECK constraint и SQL engin'a, честный как у оракла через gobal index работает. Yo.!Адекватные сравнения можно где-нибудь посмотреть? пояснения в сравнении оракла и мсск2000 можно смотреть, вот тут http://www.oracle.com/technetwork/database/database-technologies/performance/twp-perf-oracle-3.pdf в мсскл2005 уже честный партишенинг появился, а до 2005 мсскл тоже на CHECK constraints мутил ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 11:39 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
как я понял PG честный партишенинг называет Declarative Partitioning и обещает в конце 2017 выкатить (в 10й версии) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 11:46 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
Yo.!в том что у PG все тогда идет через дергание CHECK constraint и SQL engin'a, честный как у оракла через gobal index работает. http://www.oracle.com/technetwork/database/database-technologies/performance/twp-perf-oracle-3.pdf Познавательно, спасибо. PgSQLanonymous3Адекватные сравнения можно где-нибудь посмотреть?Я имел в виду c "one node hadoop cluster". Yo.!как я понял PG честный партишенинг называет Declarative Partitioning и обещает в конце 2017 выкатить (в 10й версии) Нет, это "те же яйца, вид сбоку". Из документации: "Individual partitions are linked to the partitioned table with inheritance behind-the-scenes". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 12:45 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
PgSQLanonymous3Я имел в виду c "one node hadoop cluster". с one node кажется не видел, это скорее из своего опыта. я на своем десктопе хорошо погонял в vmware (16g ram) имиджи от cloudera и hortonworks, такого рода SQL запросы на parquet файлики обгоняли оракл SE га том же десктопе в разы. PgSQLanonymous3Нет, это "те же яйца, вид сбоку". Из документации: "Individual partitions are linked to the partitioned table with inheritance behind-the-scenes". похоже на то, а я наивный пару слайдов посмотрел и решил, что Declarative Partitioning отменит тригеры ... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 14:16 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
G.CollectorВсем доброго дня. Имеется таблица с полями: ид дата метрика значение Жирные - составной первичный ключ. В таблицу в день попадает под 200-300 записей. Сейчас используется PostgreSQL с еженедельным партицированием на основе наследуемых таблиц и кластерными индексами для заверешнных партиций по полям ид и дата . В принципе, работает вполне быстро. Существуют какие-нибудь более интересные варианты? у PG есть тип данных - ranges , где можно хранить даты ОТ - ДО и даже специальный индекс под них - GiST: Код: sql 1.
а также операторы разные , типа: @> (содержит диапазон) int4range(2,4) @> int4range(2,3) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 15:26 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
G.CollectorВ таблицу в день попадает под 200-300 записей. В принципе, работает вполне быстро. Существуют какие-нибудь более интересные варианты? Чел... у тебя вообще все в шоколаде. Ничего делать не надо. Реально ничего! Вот если-б по 200-300 млн каждый день... тогда-б надо было-б прокашлять варианты стореджа. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2017, 21:46 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
PgSQLanonymous3А что такое "честный" partitioning? Честный партишионинг, это когда в СУБД есть команда которая за 0.х сек отстегивает от таблицы партицию в другую таблицу, не перемещая данные физически по датафайлам, а манипулируя только системными метаданными о объектах БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 03:07 |
|
Как лучше хранить исторические данные?
|
|||
---|---|---|---|
#18+
д0kХЧестный партишионинг, это когда в СУБД есть команда которая за 0.х сек отстегивает от таблицы партицию в другую таблицу, не перемещая данные физически по датафайлам, а манипулируя только системными метаданными о объектах БД. Давно есть: Код: sql 1.
Так что, наверное, речь о чём-то другом. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2017, 10:46 |
|
|
start [/forum/topic.php?fid=35&fpage=3&tid=1552234]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 168ms |
0 / 0 |