metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-03-25 07:18 pm

Распределенный Postgresql срач

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

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

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

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

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

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

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

[identity profile] dmzlj.livejournal.com 2010-03-26 11:37 am (UTC)(link)
Мы что-то в итоге решили, что все приборы - говно, а какие не говно, те стоят 500 евро. Проще свой сделать и везде его пихать.

[identity profile] vp.livejournal.com 2010-03-26 11:58 am (UTC)(link)
Мы почти аналогичное сделали. Но т.к. мощностей на производство нет, то мы снюхались с нормальной конторой, которая готова все сделать. а мы ей грамотно ставим задачи и описываем желаемую бизнес-логику.
Например, последняя версия прибора - это сплошной греп и логи :)

[identity profile] dmzlj.livejournal.com 2010-03-26 06:56 pm (UTC)(link)
Прикольно, а мы по скорости звука считаем.