Стартап OrioleData опубликовал новый движок хранения для СУБД PostgreSQL - OrioleDB, нацеленный на предоставление быстрого и компактного хранилища, не приводящего со временем к раздутию файлов с БД и не требующего использования периодически запускаемого процесса VACUUM для сборки мусора. Движок написан на языке Си, распространяется под лицензией PostgreSQL и реализован в форме подключаемого расширения, не требующего внесения изменений в основную кодовую базу PostgreSQL. В текущем виде движок находится на стадии бета-тестирования и пока не рекомендован для рабочих внедрений...Подробнее: https://www.opennet.me/opennews/art.shtml?num=59453
Выглядит интересно и многообещающе, но. Всё прочитал, но так и не увидел, какие уровни изоляции транзакций поддерживаются. Есть смутное подозрение, что такие бенчмарки за счёт сваливания в read uncommitted по умолчанию, хорошо если не так.> OrioleDB supports just B-tree indexes. OrioleDB roadmap contains the implementation of analogs of GiST, GIN, and BRIN.
Большой вопрос, получится ли у них с такой архитектурой реализовать эффективный GIN/GiST, выглядит как нетривиальная задача. Это все же одна из киллер фич Постгреса, в ряде случаев незаменимая.
Дурилка, а undo log тогда зачем делать, если будет read uncommited?
Вопрос не в том, зачем делать (понятно зачем, и понятно, что как минимум read committed там есть), а в том, какой был уровень изоляции, когда делали бенчмарки.Учитывая, что в postgresql read uncommitted вообще не реализован и работает как read committed, это хороший способ незаметно считерить.
Хорошо помню бенчмарки mongodb, которые "всех рвали" просто потому, что в дефолтной конфигурации Монга отдавала успешный ответ сразу после получения данных сервером.
"Хорошо помню бенчмарки mongodb, которые "всех рвали" просто потому, что в дефолтной конфигурации Монга отдавала успешный ответ сразу после получения данных сервером."А ссылок на обсжудения/разоблачения у вас не остались?
ps.Мимо проходил
даже если найдется - какой в таких прямых сравнениях смысл? Вы document db использовать вместо реляционной всерьез собрались, или наоборот?
Есть класс программ которые можно реализовать и так и так. Почему же не выбрать более лучший по каким то критериям вариант?
> Есть класс программ которые можно реализовать и так и так. Почему же
> не выбрать более лучший по каким то критериям вариант?тогда не исключено что тебе недефолтные настройки и не пригодятся и в правильной реализации все и так будет работать.
(т.е. хватит просто избегать мультидокументных транзакций и не забывать про "majority" там где действительно он нужен)
Т.е. сравнивать надо будет не два решения в лоб, а две вообще совершенно разных программы.
Сильно зависит от программы.
В некоторых случаях можно сравнить
Запись в файл и запись в бд.
По функционалу для пользователя приложение будет одно и тоже
Дурилка, а где связь между undo и read uncommited? Read uncommited не отменяет необходимость как-то rollback-и обслуживать.
" чтение страниц с данными без использования блокировок"
В Postgres как и в большинстве современных баз транзакции изолируют не через lock, а через MVCC
Serializable ты иначе, чем через блокировки на уровне строк/страниц не сделаешь. Ну в Postgres-е SS реализован как раз через блокировки.
Предикатные блокировки в PG непосредственно блокировками не являются, это просто механизм обнаружения конфликтов, там ничего не блокируется.
Ну это как раз нормально, это же полноценный версионный движок, а не мыскль с myisam
LW Locks же
И без того тормознутая простгря станет ещё тормозные. А удалять записи это моветон ставь флаг удалено и всё.
Ты новость-то читал? Сделали фактически такой же MVCC, что и в MySQL.
Ставить флаг - это удалить запись и записать новую, днище профнепригодное
> Ставить флаг - это удалить запись и записать новую, днище профнепригодноетого же размера и с тем же (кроме флага) содержимым. Это не совсем то же самое что удалить запись и потом записать новую неизвестной длинны.
Что за хрень?! Срочно высылайте ликвидационную команду!
Как это постгрез без вечнораздвувающейся базы?! Где я буду теперь харчеваться, я вас спрашиваю?!
Так вот что тебя сделало таким какой ты есть!
Ну в целом одного только 25летнего опыта общения с постгрезом хватило бы чтоб горячо ненавидеть все это вот шва..6ешплатное г-нецо.
Но к сожалению, нет, только этим дерьмом не ограничилось.
>все это вот шва..6ешплатное г-нецонеужели ISS оказался лучше и безопаснее и производителнее этих ваших нжинксов с индейцами?
Причем тут МКС?
А если ты про IIS - у меня есть подопытный экземпляр проработавший с 2000го года. Не с нулем посетителей.Ты можешь похвастать таким же индейцем? Пусть даже двадцать раз поапгрейженым.
> Причем тут МКС?
> А если ты про IIS - у меня есть подопытный экземпляр проработавший
> с 2000го года. Не с нулем посетителей.
> Ты можешь похвастать таким же индейцем? Пусть даже двадцать раз поапгрейженым.торчащим наружу все эти джвадцать лет? или в уютном интранетике?
>> Ты можешь похвастать таким же индейцем? Пусть даже двадцать раз поапгрейженым.
> торчащим наружу все эти джвадцать лет? или в уютном интранетике?наружу. Индексируется.
Это скорее про мыскль, в котором костыльная репликация в любой момент отваливается. Постгрес, да, требует усилий при конфигурации, это не тот софт, который можно использовать с настройками по умолчанию не думая, но если один раз сделать нормально, вспоминаешь о нем, только когда место на диске заканчивается.
Ну да, ну да. Сколько там "некостыльных" способов репликации уже понапридумывали постгрезу и какие из них "не отваливаются" и не обеспечивают базу почти как настоящую, только вот...почему-то мусор в ней ?> Постгрес, да, требует усилий при конфигурации, это не тот софт, который можно использовать с
> настройками по умолчанию не думая, но если один раз сделать нормальноага. конечно. А почему настройки по умолчанию нельзя сделать такими чтоб их можно было использовать, а? А вот потому - что дело не в настройках, а в том что куда ни ткни - везде грабли, и надо подбирать наборчик костыликов и подпорок под каждую конкретную ситуацию и молиться чтоб работали.
> только когда место на диске заканчивается.
типичная проблема постгрезоводов, не так ли?
Ну ничего, ничего - вон за вас ее уже порешали. Ждем не дождемся в проде.
>>Ну да, ну да. Сколько там "некостыльных" способов репликации уже понапридумывали постгрезу и какие из них "не отваливаются" и не обеспечивают базу почти как настоящую, только вот...почему-то мусор в ней ?А можно раскрыть каждый пункт(правда интересно), какие претензии к способам репликации? И про какой мусор речь?
леняво. Полный гугль инструкций для чайников "как же победить репликацию", и если читать не только вопрос но и ответы - выясняется что у победы в очередной раз какой-то странный вкус и количество методов потому и больше одного, что никакого универсального среди них нет. Как оно обычно и бывает когда при разработке ни о какой репликации и не думали даже. mysql'ю повезло больше, поскольку innodb придумали сильно позже остального. (репликация через лог команд, так нелюбимая предыдущим анонимом - это тяжкое наследие myisam или вообще давно забытой первоначальной схемы)Мусор в том смысле, что может внезапно оказаться что содержимое базы реплики "немного не вполне точно" отражает содержимое оригинала, который уже, как обычно, к этому мгновению накрылся.
> ленявоэто суть твоя и всех твоих в:серов, трепло
> Полный гугль инструкций для чайников "как же победить репликацию", и если читать не только вопрос но и ответы - выясняется что у победы в очередной раз какой-то странный вкус и количество методов потому и больше одного, что никакого универсального среди них нет. Как оно обычно и бывает когда при разработке ни о какой репликации и не думали дажетебя попросили конкретику раскрыть, а пересказать поверхностную байку, выдуманную такими же бездарями как ты, но и тут ты ожидаемо об8$рался, буквально пересказав историю mysql
я м-кам вроде тебя не обязан нахаляву читать лекции. Чем вы безграмотней, тем мне лучше.
Так целых два некостыльных, и тот, который через стриминг WAL, работает железобетонно.В отличие от MySQL, где один условно нормальный (но ломается из-за других костылей MySQL), один - детсадовский костыль (реплей SQL), и третий - суперкостыль, смесь обоих методов.
А что касается дефолтов - там дефолты такие, чтобы на любом железе запускалось, а не чтобы было хорошо. Там, конечно, по современным меркам архаичная юниксовая архитектура, те же воркер-процессы с, как следствие, кучей shared memory, и прочие нюансы, напоминающие о том, что этому коду уже за тридцатник. Но после студенческой поделки MySQL, в котором единственное хорошее (InnoDB) украдено и прилеплено сбоку - это всё такие мелочи.
Ну и да, аспирантская-то поделка (название как бы намекает) во сколько разов-то круче студенческой будет? Вот щас цельный профессор ой... опять прилепит сбоку... нормальный бэкэнд - и вот теперь-то уж заживем.Постгрез весь написан вокруг очень странной идеи с time travel (которого нет уже четверть века, а требующая vacuum дисковая структура осталась), вокруг которой наверное десяток диссеров защищен, но щастья нам от этого нет.
ИБ займешься, на удовлетворение всех требований тов. майора работы на 100 лет вперед-))) А за это время тов. майор по многочисленными просьбам трудящихся еще требований подкатит-))
Ну щас, разбежался. У удовлетворятеля майора свои дети есть.А я просто тихо спускаюсь с горы - как раз к моменту когда у него ой-место-кончилось.
И майор мной доволен, и ИБ, и вроде как действительно же ж - "он опять совершил подвиг!"
А эти гады все норовят разрушить. Одна надежда что до мейнстрима не доберутся потому что.
БЛИН, она еще и CPU не жрьот?! Голыми руками бы этих изобретателей задушил!
На всякий случай, если это не тролинк: при x5 TPS оно потребляет x2.5 CPU. То есть, потребление CPU под нагрузкой снижено в 2 раза.
Я и говорю - п-ц какой-то.
У меня тут есть прекрасный экземпляр который просто если забыть закрыть ему сессию (что горе-разработчики очень любят) начинает жрать так что приходится вручную (автоматически нельзя, оно может потерять ценную и важную ненужно) его куда-то убирать с гипервизора. Если он перестанет это делать - за что я буду получать премию-то?!
> Я и говорю - п-ц какой-то.
> У меня тут есть прекрасный экземпляр который просто если забыть закрыть ему
> сессию (что горе-разработчики очень любят) начинает жрать так что приходится вручную
> (автоматически нельзя, оно может потерять ценную и важную ненужно) его куда-то
> убирать с гипервизора. Если он перестанет это делать - за что
> я буду получать премию-то?!Придумаешь, что-нибудь :)
> за что я буду получать премию-то?!Запереустановку вантуза своему насяльнику. Думаю сможешь что-то придумать.
По факту начальник недавно переустановил (под моим чутким руководством но самостоятельно) linoops.(там навернулся, точнее, банально поломали, гитляп, но linoops тоже участвовал. Кстати, postgres - но у гитляпа оказался свой какой-то уныло-бэкапер который все сам и есть тоже, к счастью, оно там сработало и не пришлось руками ничего выковыривать.)
А объяснить ему зачем переустанавливают винду, как ты правильно, надеюсь, хотя бы теперь, понимаешь - не получится.
Ubuntu?
центось вроде.Что на старом сервере было, нахрена тут улучшайкать.
Звучит круто. Но непонятно почему данную фичу сделали некие васяны и только в 2023м году.
> Звучит круто. Но непонятно почему данную фичу сделали некие васяны и только
> в 2023м году."анекдот про сына адвоката, успешно выигравшего процесс, кормивший семью тридцать лет"
«некие васяны» - один из коммиттеров (т.е. имеющих право git push) постгресса.
> «некие васяны» - один из коммиттеров (т.е. имеющих право git push) постгресса.блин, зачем ты это написал... все пропало...
> сделали некие васяныИнтересно, а кто для тебя не Васяны тогда, если профессор компьютерных наук у тебя Васян?
Хотя, не парся, у вас же мужики в подвале и виндовсы и юниксы уже за пояс заткнули, усё на своем работаете, исключительно
> только в 2023м годуКак это ни странно, существуют программисты, которые сначала думают, а потом пишут.
"не требующего внесения изменений в основную кодовую базу PostgreSQL"
Интересно.
Когда я смотрел на Oriole последний раз - ему требовалось также патчить исходники PG.
Звучит заманчиво, конечно.
Т.к. автор Ориоле - один из коммитеров постгресса, видимо ему удалось протолкнуть нужные патчи в ядро. Я предполагаю, не проверял.
> Т.к. автор Ориоле - один из коммитеров постгресса, видимо ему удалось протолкнуть
> нужные патчи в ядро. Я предполагаю, не проверял.Я вот то же самое подумал.
И тоже не проверял.
На ютуб-канале rupostgres есть интервью с разработчиком "Александр Коротков: Наболевшие проблемы PostgreSQL". После этого интервью стал посматривать на проект.
Если он всё-таки осилил сделать всё это только одним подключаемым расширением - он очень большой молодец, и надеюсь, у него теперь будет достаточно масла, чтобы мазать на свой хлеб.
На хлеб он будет мазать масло поха, пох-то теперь без работы считай остался. Учит как произносить "свободная касса". бггг
> На хлеб он будет мазать масло поха,кто ж ему масло-то даст?! Смотри-смотри - 6ешплатное! Налетай, взять-взять-взять!
Кончатся у него гранты - я не гордый, следующую смену за кассой пусть тоже занимает, все равно один не осилю четыре подряд. Но чур ему ночную.
Та не, там не гранты, там попытка в бизнес. Уже предлагают саппорт и database as a service (пока робко предлагают, скорее тестируют интерес). Не взлетит - ну пойдет какой-нибудь EnterpriseDB за зарплату пилить.
Ну тогда моему маслу точно ничего не угрожает.Поконкурировать с тем же DO - у которого сто лет как есть - это надо найти совсем уж наивного ло...инве...не, все же лоxa.
А украинский флажок напрочь исключает вариант поконкурировать там куда конкурентов не пускают (и в целом правильно, там масло все равно товарищмайор слопает и на сдачу дачку себе прикупит, на Тенерифе)P.S. кто вдруг не видел как у DO сделана дизастер рекавери - сходите поржать. Не, от замены бэкэнда легче ему не станет, насколько я догадываюсь. Тут все политбюро надо повесить, и генерального секретаря прибить.
Так он раньше в Постгрес Про работал. Раз уехал в США и повесил флажок, значит, и не заинтересован в конкуренции на российском рынке. И я его прекрасно понимаю, работать с товарищами майорами - дело нервное. Мне ещё в вегетарианские времена, в середине нулевых, такого опыта хватило, чтобы всю жизнь держаться подальше. Нервы дороже.
Дык может дело не в заинтересован, а в том что вариант "в Украину" замаячил конкретный.
Знаем мы эти максутовы "брони", нихрена они не работают.В любом случае, из "обоймы" партактива он явно выпал. Хорошо пока еще его патчи берут.
Так что мое масло он точно теперь не отъест. Да и DO такому конкуренту не напугать.
Но вот вдвоем в свободную кассу - могем угодить.Хотя, конечно, профессор не вчера родилсо, поди сможет получить новый грант.
В середине 2020 года замаячил? Да профессор телепат
да довольно много их было, тех телепатов. Не всем удалось ловко телепнуться на уютную профессорскую должность во враждебных странах, это вот да.(завидовать дурно, я знаю)
На https://news.ycombinator.com/item?id=36740921 Александр отвечает: нет, пока патч в ядро нужен. Но надеется в ближайшее время донести его в ядро, а потом и сам движок.
> На https://news.ycombinator.com/item?id=36740921 Александр отвечает: нет, пока патч
> в ядро нужен. Но надеется в ближайшее время донести его в
> ядро, а потом и сам движок.Да, спасибо за ссылку, прочитал.
Ну, всё равно очень большое дело сделано.
На днях попробую собрать и посмотреть как оно в деле.
Там патч расширяет extension API, так что это не костыль типа 1С-овских патчей, а универсальное улучшение апстрима в чистом виде, да и автор - опытный коммиттер в Постгрес. Такое в апстрим примут.
Уже круче Оракла.
Инженегры оракела уже добавили в код постгри пару мин замедленного действия. Активируют в нужный момент, чтобы акции оракела взлетели до небес.
Пруфы, в виде ссылок на коммиты, добавляющие это ?
? Оракл изначально данные in-place апдейтит, при создании БД у него даже есть параметр (PCTFREE), указывающий в процентах, какое кол-во пространства блока резервировать для будущих изменений, чтобы при раздувании размера строк (кортежей) апдейтами не пришлось эти строки куда-то релокейтить. Когда-то по-умолчанию это было 10% кажись, но ты можешь задать своё значение. Т.е. когда в блоке строками будет забито 90% места, блок перестает быть доступным для создания в нем новых строк.
Главное, чтобы остался выбор. Потому что VACUUM имеет не только недостатки, но и преимущества.
Верной дорогой двигаются. Еще несколько сот раз таких же продвижений, и постгря достигнет уровня оракель ДБ.
"чтение страниц с данными без использования блокировок"
что вы, ораклю до такого пехом переть и переть.
С точностью до наоборот.PostgreSQL со временем приближается к Oracle. Non-blocking read - стандартное поведение DBMS Oracle. Блокировки на уровне строк. Этот механизм давно скопировали в П.
Но вы же понимаете разницу между:
"неблокирующее чтение"
и "чтение без блокировок"?
А в чем она заключается в данном случае?
В Оракле нет Serializable честного. Поэтому и блокировки не нужны. В Слоне блокировки нужны только в режиме Serializable. И то, не всегда.
В Оракле как раз undo log всегда был. Только там он туповат, если много параллельных транзакций, при переполнении буфера лови роллбэк. Тут такой проблемы нет, упрется только в диск разве что.
Я сегменты отката ещё помню, потом видел undo tablespace, а вот undo log ни разу не видел. А они точно бывают?
Почему бы и нет? У DB2 в транзакционном логе есть undo и redo данные. А тут redo уже есть в WAL, так что undo, надо думать, просто отдельно положили.
Это потому что DB2 реализует другую стратению изоляции транзакций, только для этого и нужно. В Oracle undo отдельно положили, потому что пр-другому просто не нужно было.
У поздних DB2 тоже сделали "мультиверсионность", причём undo tablespace для этого не вводили, а воспользовались данными из транзакционных логов. В самом деле, undo-данные нужны и они есть, так какая разница, откуда они будут взяты?
Потому что по-другому было нельзя. Пришлось обеспечивать совместимость механизмов блокировок для старых приложений, потому нельзя было менять механизмы журналов.И в postgresql такая же история. Старые продкуты несут массу исторических атавизмов.
Это очень неудачное решение. "Время жизни" реду- и анду-данных чаще всего радикально отличается. И хранить их в одной хранилке крайне нерационально.
Только не всегда, а никогда не было и нет.
Если в слове Oriole сделать 2 ошибки, получится Oracle
А если в слове Аноним сделать 6 ошибок то получится слово Oracle
Если *** то это уже не ***!
Проще запилить новый бекенд чем читатать документацию к старому
Ещё немножко, и они притащат в постгрю innodb. Но зачем, если оно уже есть?
На том поле, где InnoDB хорош (стандартная реляционка с btree-индексами), это лучше, чем InnoDB. Там на гитхабе есть документация архитектуры.
Пока ещё рано говорить о "лучше", по мере вылизывания сырой альфы будет напихано гораздо больше веселья.
Даже близко ниче общего нет в реализации. InnoDB это старье из 70х годов базирующиеся на канонических трудах Кнута, Вирта и т.п.
Ино это Оракл, напомню.
Что-то слишком хорошо, чтобы быть правдой :)
Хм... я думал особенность PostgreSQL в отличии от MySQL как раз в отсутствии разнообразных движков, в результате чего в слоне лучше работает кластеризация.
Можно подумать, что все прочие, в том числе и крайне коммерческие, вендоры СУБД не делают утилизацию освободившегося пространства или изменений по месту по недомыслию и общей тупости. У всего этого микроменеджмента есть крайне высокая цена. Которая в проде чаще всего совершенно не оправдана.
Интересно, я один вижу, что cpu usage не снизилось, а повысилось, судя по сравнительным графикам?