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] plumqqz.livejournal.com 2010-03-25 07:39 pm (UTC)(link)
Забавно, что в случае оракла при минимальном применении головы это получилось бы автоматически.

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

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

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

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

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

[identity profile] plumqqz.livejournal.com 2010-03-25 07:52 pm (UTC)(link)
То, что в постгресе называют партициями, не партиции, но всего лишь неумелая подделка под оные. (Нет нормального секционирования индексов, не работают параметры). Внимательней овладевайте документацией.

Настоятельно рекомендую прочитать про партиции в Оракле и партиции и MDC в DB2.

[identity profile] theiced.livejournal.com 2010-03-25 08:01 pm (UTC)(link)
ок. в итоге проблема была успешно решена перманентно сонным мной за рабочий день. великие оракель эксперты всё ещё ставили бы оракель.

(Anonymous) 2010-03-26 04:16 am (UTC)(link)
Эксперты по экспертам оракеля такие эксперты

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

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

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

[identity profile] plumqqz.livejournal.com 2010-03-25 07:55 pm (UTC)(link)
Именно что как-то.

У постгреса довольно ракообразная версионность и он всегда вынужден лазить в таблицу, дабы убедится, жива ли запись или как. Т.е. покрытие индексом в нем не работает. В данном случае это было как серпом по гонадам.


Угу, префиксная. Ну можно и собственно данные пожать.

[identity profile] plumqqz.livejournal.com 2010-03-25 08:00 pm (UTC)(link)
А, еще маленькое "но". У постгреса оверхед в 26 байт на запись, кроме заголовка страницы, который тоже немаленький. У оракла - два байта, что ли.

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

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

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

[identity profile] max-posedon.livejournal.com 2010-03-26 12:23 am (UTC)(link)
5k$ за процессор, и это за базовый oracle, не RAC. На простой 4х процессорный сервер(по 2 ядра на каждом). это уже 20k$ + специально-обученный-мальчик-oracle-вод минимум на месяц, ещё 5k$ = 25k$, в России такие дорогие почки, или я таки уже на 3-4 почки насчитал?)

(Anonymous) 2010-03-26 04:14 am (UTC)(link)
Справедливости ради:
партиции в oracle бывают только в Enterprise Edition ($47,500 за процессорное ядро, а не за сокет как в SE(1)),
причём за дополнительные деньги ($11,500/core)

Поэтому в банковском опердне Oracle Partitioning мы не используем.

[identity profile] blacklion.livejournal.com 2010-03-26 07:32 pm (UTC)(link)
Бляяя… Неудивительно что они Sun Покупают при таком походе. Да ведь ещё наверняка эти цены плавают.

[identity profile] theiced.livejournal.com 2010-03-27 01:08 am (UTC)(link)
итого 47500*4 + 11500*4 = четверть ляма денех с клиента (!) шоп почти сходу сделать. ой как клёво, уссаццо. и это не считая услуг крутых оракель спецов. а раз оракель, то должен быть ещё и специалист по безопастности, а лучше отдел сразу. ну так в серьёзном бизнесе положено.

такие вот дятлы только и умеют что паразитировать (причём на паразитах типа газа или нефтесосалок), их в реальные условия поместить, посдыхают быстро.

[identity profile] blacklion.livejournal.com 2010-03-27 07:27 am (UTC)(link)
Эти цены, скорее всего, ненастоящие к тому же. Т.е. если они для одного клиента были такие - н е значит что для другого будут такие же.

Ну, я про Orcale хорошую историю из первых рук знаю.

Жила-была компания Sleepy Cat Software. Имела очаровательный логотип и делала Berkeley DB. bdb шла под двумя лицензиями — Full BSD и коммерческой, причём была на сайте цена той лицензии. Потом пришлё Oracle и купил SCS.

А ещё через пару лет моему другу потребовалась коммерческая лицензия на BDB потому что нужна она была ему в заказном проекте шибко (ну вот удобнее всего с ней получалось), да и заказчик был понимающий, был готов денег отсыпать на неё. Пошёл мой друг на сайт Oracle, а нет там цены, есть ссылка “Request quote”. Нажал он на ссылку, заполнил поля формы (кто он, откуда, телефон свой рабочий, е-мейл, зачем ему вообще коммерческая BDB), и стал ждать. Ждал-ждал, через месяц плюнул — работать-то надо — и сделала его команда проект без BDB, что-то менее удобное взяли, да то ли с Apache license то ли с New BSD, то ли с MIT — в общем, то, что подходило по лицензии. А ещё через пару месяцев (т.е. месяцев через 6-9 после заполнения формочки на сайте Orcale) позвонил ему сейлз из Oracle и стал выяснять — а что за проект в точности, что за бизнес, хороший ли у них офис и сколько человек в фирме и какие у них зарплаты. В общем, зондировать почву на тему — а сколько за ту лицензию денег можно слупить с данного конкретного клиента. Ну, был послан в пешее эротическое на чистом английском, само собой.

[identity profile] metaclass.livejournal.com 2010-03-27 08:53 am (UTC)(link)
Вообще подход оракла и похожих контор напоминает торговцев на базаре. Ценников нет. Спрашиваешь "сколько стоит", начинается юление на тему "а сколько дашь" и попытки торговаться. Я обычно таких сразу нахер посылаю, мне с ними общаться неинтересно.

(Anonymous) 2010-03-27 04:50 pm (UTC)(link)
Всё, в общем-то есть
http://www.oracle.com/corporate/pricing/pricelists.html

Удивляет другое - как можно так злобно критиковать, додумывать, как оно "в серьёзном бизнесе", и при этом даже не потрудиться прочитать прайс из 1 страницы.

Эксперты по экспертам оракла такие эксперты.