metaclass: (Default)
[personal profile] metaclass
В итоге, в разборки насчет использования [livejournal.com profile] dmzlj postgresql под приличной нагрузкой в системе GPS-мониторинга подключили всех до кого смогли дотянутся, вплоть до разработчиков postgresql.

Я потерял нить обсуждения где-то в конце, но судя по результатам, ключевой аспект шизы был в двух вещах: фрагментированность данных и индекса (условно говоря - на каждую интересующую нас запись нужно было читать целую страницу данных, в которой все остальное нас не касалось) и нехватка памяти для кэша, в результате чего все начинало тормозить.

В качестве решения проблемы в итоге предложили какое-то хитрое двухуровневное партиционирование, которое должно устранить проблему фрагментации - сначала партиционировать сильно актуальные данные (текущий день(неделя, месяц)) по hash id объекта, затем переносить данные в партиции по времени кусками с одинаковыми id чтобы избежать фрагментации.

Date: 2010-03-25 07:39 pm (UTC)
From: [identity profile] plumqqz.livejournal.com
Забавно, что в случае оракла при минимальном применении головы это получилось бы автоматически.

Date: 2010-03-25 07:42 pm (UTC)
From: [identity profile] theiced.livejournal.com
забавно, что в случае постгре, при минимальном применении головы, это бы тоже получилось автоматически.

ну и будет учитывать то что когда я в 9 утра начал заниматься этой проблемой - то я уже не спал более суток ;]

Date: 2010-03-25 07:45 pm (UTC)
From: [identity profile] plumqqz.livejournal.com
Не получилось бы. Постгрес не умеет партиции, IOT и компрессию индексов (да и данных тоже).

Date: 2010-03-25 07:49 pm (UTC)
From: [identity profile] theiced.livejournal.com
(посмотрел на партиции) точно не умеет?

эксперты такие эксперты...

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2010-03-25 07:52 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2010-03-25 08:01 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2010-03-26 04:16 am (UTC) - Expand

Date: 2010-03-25 07:51 pm (UTC)
From: [identity profile] metaclass.livejournal.com
partitioning как-то умеет: http://www.postgresql.org/docs/8.4/interactive/ddl-partitioning.html

IOT вроде не умеет и читать данные только из индексов, если их хватает для запроса, судя по сегодняшним тестам - тоже.

А компрессия индексов (префиксная что ли?) это видимо тут бы помогло прилично, да.

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2010-03-25 07:55 pm (UTC) - Expand

(no subject)

From: [identity profile] plumqqz.livejournal.com - Date: 2010-03-25 08:00 pm (UTC) - Expand

Date: 2010-03-25 07:45 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Насколько я помню из обсуждений, Оракл там в бюджет не вписывается, проще немного пошаманить над postgresql или использовать вуду-эрланговую мнезию.

Date: 2010-03-25 07:47 pm (UTC)
From: [identity profile] plumqqz.livejournal.com
Ну что ж делать, раз не вписывается. Тады, конечно, ой.

Date: 2010-03-25 08:59 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
Но я почти решил проблему. Мы кого-нить поймаем, вырежем почку, продадим и поставим оракл. На один сервак должно хватить.

(no subject)

From: [identity profile] max-posedon.livejournal.com - Date: 2010-03-26 12:23 am (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2010-03-26 04:14 am (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2010-03-26 07:32 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2010-03-27 01:08 am (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2010-03-27 07:27 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2010-03-27 08:53 am (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2010-03-27 04:50 pm (UTC) - Expand

Date: 2010-03-25 07:41 pm (UTC)
From: [identity profile] theiced.livejournal.com
В итоге - 350 лямов записей на моём девтопе.

Date: 2010-03-25 07:43 pm (UTC)
From: [identity profile] theiced.livejournal.com
для статистики - у них уже с десятком лямов всё умирало к хуям.

Date: 2010-03-25 08:03 pm (UTC)
From: [identity profile] madeveloper.livejournal.com
1. event_id_idx - долой
2. Если селективность по дате (судя по запросам это сутки) сопоставима с селективностью по id (если id в пределах тысячи, то за три года селективность будет аналогичная), то "event_id_dt" btree (id, dt) -> "event_dt_id" btree (dt, id) - записи в индексе меньше фрагментироваться будут и тогда event_id_idx можно оставить
3. непонимаю, как помогло партицирование данных, если в запросе выбирается id и dt которые в индексе есть - т.е. к данным нормальный сервер вообще не полезет


Date: 2010-03-25 08:05 pm (UTC)
From: [identity profile] theiced.livejournal.com
индекс он тоже... того... не совсем маленький, да. где то в 1/4 данных.

Date: 2010-03-25 08:08 pm (UTC)
From: [identity profile] madeveloper.livejournal.com
т.е. индексы тоже спартицировали?

Date: 2010-03-25 08:07 pm (UTC)
From: [identity profile] madeveloper.livejournal.com
А, вижу. Судя по появившиеся наверху постам апослягря к нормальным серверам не относится...

Date: 2010-03-25 08:09 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Лезет к данным. Если я правильно понял комментарий выше - то это следствие версионной архитектуры - лезет проверять версию записи, похоже.

Кстати

Date: 2010-03-26 04:27 am (UTC)
From: [identity profile] plumqqz.livejournal.com
Попробуйте pg_reorg на это дело натравить. По id, потом по дате.

Date: 2010-03-25 08:54 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
И что-то это такой все гиморой в итоге, что я уже не рад, что ввязался.

Date: 2010-03-25 09:01 pm (UTC)
From: [identity profile] vp.livejournal.com
было бы в 1000 раз меньше геморроя если бы заказчика били по рукам на этапе постановки. Ваши 40.000 точек в день нахер никому не упали. У нас самый требовательный к качеству трека транспорт генерит не более 3.000 точек в сутки. И это при круглосуточной работе.

Сразу отметается постановка геморозадачи.

Date: 2010-03-25 09:05 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
28800. Я что-то не догоняю, откуда 40 взялось. Но на этапе постановки задачи тем более были неясны все вот эти вот нюансы, которые сейчас повылазили.

И ваще, с глубоким партиционированием даже мнезия работает ok. У нас так и есть, собственно.

А вот сумасшедшие железнодорожники хотят ваще скважность полсекунды. К вопросу о. У них, правда паровозов не так много.

Date: 2010-03-25 09:10 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Я подозреваю, там что-нибудь из соображений "следить за сверхскоростным поездами". Особо это радует в контексте точности GPS-приемников и скорости выдачи ими результатов :)

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2010-03-25 09:13 pm (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2010-03-26 04:42 am (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2010-03-26 04:44 am (UTC) - Expand

(no subject)

From: [identity profile] b00ter.livejournal.com - Date: 2010-03-26 05:09 am (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2010-03-26 07:23 am (UTC) - Expand

(no subject)

From: [identity profile] norguhtar.livejournal.com - Date: 2010-03-26 04:48 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2010-03-26 08:13 am (UTC) - Expand

(no subject)

From: [identity profile] norguhtar.livejournal.com - Date: 2010-03-26 09:00 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2010-03-26 10:05 am (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2010-03-26 07:40 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2010-03-26 07:45 pm (UTC) - Expand

Date: 2010-03-26 08:01 am (UTC)
From: [identity profile] vp.livejournal.com
Нельзя идти на поводу у заказчика. И в предметную область надо глубоко залазить, чтоб потом их фейсом об тейбл бить. Это как бы заправка хотела чтоб мы им считали расход топлива в километрах. Вот хотят и все тут, ну что ты будешь делать? Или вопросы недостижимой точности. Всегда есть возможность переубедить заказчика на ранней стадии.
Потому что априори ЗАКАЗЧИК - НЕ СПЕЦИАЛИСТ в области автоматизации, которую он затевает. Это мы специалисты, а он что-то по вершкам схватил и кричит об этом.

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2010-03-26 08:11 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2010-03-26 08:12 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2010-03-26 08:22 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2010-03-26 08:32 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2010-03-26 08:23 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2010-03-26 08:34 am (UTC) - Expand

Date: 2010-03-26 05:54 am (UTC)
From: [identity profile] denisioru.livejournal.com
40 тыщ в сутки это и правда дофига. Это в среднем одна запись в 2 секунды, куда столько? Вот выдержка по живому трекеру по количеству записей:

2010.03.19 5213
2010.03.20 3031
2010.03.21 3109
2010.03.22 2636
2010.03.23 2232
2010.03.24 2548
2010.03.25 2908

Сюда включено всё - стоянки, повороты, движение.

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2010-03-26 08:02 am (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2010-03-26 08:09 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2010-03-26 08:20 am (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2010-03-26 08:28 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2010-03-26 08:45 am (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2010-03-26 08:53 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2010-03-26 09:03 am (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2010-03-26 09:08 am (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2010-03-26 09:14 am (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2010-03-26 09:04 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2010-03-26 09:07 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2010-03-26 09:15 am (UTC) - Expand

Date: 2010-03-26 09:50 am (UTC)
From: [identity profile] denisioru.livejournal.com
Коль скоро тут GPS-навигации тред, то спрошу - как народ борется со сменой спутников при длительных стоянках? Выбросы +- хренова туча метров. Причем отличить такие выбросы от штатного движения порой не совсем просто.

Date: 2010-03-26 10:10 am (UTC)
From: [identity profile] dmzlj.livejournal.com
Выбором приемника GPS и акселерометром.

Date: 2010-03-26 10:28 am (UTC)
From: [identity profile] vp.livejournal.com
У нас задача вообще обобщенная. Мы делаем софт. Потому сразу считаем, что все приборы разные, есть глупые, есть очень глупые и т.п. Потому все алгоритмы - "наверху".
С выбросами боремся тучей алгоритмов.
1. Если стоянка, то координата усредняется
2. изменения координат фильтруются вариацией на тему медианного фильтра
3. скорость постоянно пересчитывается вручную (есть недоверие к тому, что насчитывают приборы)
4. скользящими окнами высчитываются 2е производные на предмет "а не уплющило ли от такого скачка там водителя насмерть", и по таким критериям бракуются скачки как невозможные.

Вот пример картинки эффективности выбранных алгоритмов.

ЗЫ Конечно, когда имеет место залочка на приборы одного типа и они НОРМАЛЬНЫЕ, масса подобных мер не нужна :)

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2010-03-26 11:37 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2010-03-26 11:58 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2010-03-26 06:56 pm (UTC) - Expand

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 24th, 2025 02:39 pm
Powered by Dreamwidth Studios