минулій статті ми дізналися, як за допомогою утиліти pg_filedump можна відновити дані, або, принаймні якусь їх частину, повністю вбитої бази даних PostgreSQL. При цьому передбачалося, що ми звідки знаємо номери сегментів, що відповідають таблиці. Якщо ми знаємо частина вмісту таблиці, її сегменти дійсно не складно знайти, наприклад, простим grep'ом. Однак у більш загальному випадку це не так-то просто зробити. До того ж, передбачалося, що ми знаємо точну схему таблиць, що теж далеко не факт. Так от, нещодавно ми з колегами зробили новий патч для pg_filedump, що дозволяє розв'язати названі проблеми.
Читати далі →

Приклад відновлення PostgreSQL таблиць за допомогою нової мега фічі pg_filedump



Дозвольте я розповім вам про одну класної фиче, яку ми з колегами з Postgres Pro нещодавно запилили в утиліті pg_filedump. Ця фіча дозволяє частково відновлювати дані з бази, навіть у разі, якщо база була сильно пошкоджена і інстанси PostgreSQL з такою базою вже не запустиш. Звичайно, хочеться вірити, що потреба в такому функціоналі виникає вкрай рідко. Але на всякий випадок щось подібне хотілося б мати під рукою. Читайте далі, і ви дізнаєтеся, як ця фіча виглядає у дії.
Читати далі →

І знову про рекурсивних запитів

У цій замітці мова піде про те, як писати рекурсивні запити. Ця Тема піднімалася не раз і не два, але зазвичай все обмежується простими «дерев'яними» випадками: спуститися від вершини до листя, піднятися від вершини до кореня. Ми ж займемося більш складним випадком довільного графа.

Почнемо з того, що повторимо теорію (дуже коротко, тому що з нею все ясно), а потім поговоримо про те, що робити, якщо незрозуміло, як підступитися до реальної задачі, або начебто зрозуміло, але запит вперто не хоче працювати.

Для вправи будемо використовувати демо-базу, докладно описану раніше, і спробуємо написати в ній запит для пошуку найкоротшого шляху з одного аеропорту в інший.


Читати далі →

Демонстраційна база даних для PostgreSQL

У цій замітці я розповім про нашу демонстраційній базі даних для PostgreSQL: чому вона важлива для нас і може стати в нагоді вам, як влаштована схема і які дані в ній містяться.
Відразу наведу посилання на повний опис (там же написано, де взяти демо-базу і як її встановити): https://edu.postgrespro.ru/bookings.pdf.
image
Читати далі →

ZSON: розширення PostgreSQL для прозорого стиснення JSONB



Нещодавно ми виклали на GitHub ZSON. ZSON — це розширення до PostgreSQL для прозорого стиснення JSONB-документів. Стиснення здійснюється шляхом виділення рядків, найбільш часто зустрічаються в ваших документах, і побудови словника з цими рядками. Притому рядки можуть бути не тільки ключами документа, але і значеннями або, наприклад, рядками з вкладених масивів. У деяких випадках ZSON дозволяє зменшити розмір бази до двох разів і збільшити кількість транзакцій в секунду на 10%. У shared buffers документи зберігаються в стислому вигляді, за рахунок чого економиться пам'ять теж.

Цікаво? Читайте далі, і ви дізнаєтеся, як користуватися всім цим господарством на практиці.

Читати далі →

Новий реліз PostgreSQL 9.6: внесок Postgres Professional

Сьогодні, 29 вересня 2016 року, вийшов новий реліз PostgreSQL, який отримав номер 9.6. У ньому міститься дуже багато корисних фіч, і не можна не розповісти про них, тим більше, що внесок нашої компанії в цей реліз суттєвий. Тому в цій статті ми розповімо про тих розробках Postgres Pro, які увійшли в реліз.

Читати далі →

Приклади реальних патчів в PostgreSQL: частина 2 з N



У попередніх статтях ми розглянули процес розробки PostgreSQL, а також приклади деяких реальних патчів, прийнятих в цю РСУБД за останній час. При цьому розглянуті патчі були, прямо скажемо, якісь «несерйозні» — виправлення помилок, виправлення найпростіших косяків, знайдених за допомогою статичного аналізу, та інше в такому дусі.

Сьогодні ми розглянемо приклади вже більш серйозних патчів, що усувають вузькі місця в коді, виправляють досить серйозні помилки, відносно великі рефакторинги, і так далі. Як і раніше, основна мета статті — не стільки висвітлити зміни, прийняті в PostgreSQL 9.6, скільки показати, що розробка open source проектів, зокрема PostgreSQL, це цікаво і не так складно, як вам це може здаватися.

Якщо ця тема вам цікава, прошу під кат.


Читати далі →

Контрибьютим в PostgreSQL: приклади реальних патчів, частина 1 з N



Раніше в статті Стаємо контрибьютером в PostgreSQL був детально розглянутий процес розробки PostgreSQL і використовувані при цьому інструменти, були запропоновані деякі ідеї для першого патча і розказано, куди і як ці патчі треба посилати. Також були наведені посилання на додаткові джерела інформації щодо внутрішнього устрою РСУБД.

Тепер же ми розглянемо приклади реальних патчів, прийнятих в PostgreSQL за останній час. Якісь з цих патчів були написані безпосередньо мною, при розробці інших я активно брав участь в якості ревьювера. Це порівняно невеликі патчі. На момент написання цих рядків я займаюся розробкою PostgreSQL менше року, і раніше розробкою СУБД я не займався (рівно як і розробкою на мові C за гроші). Тому є підстави вважати, що дані патчі будуть цікаві як новачкам, бажаючим почати брати участь в розробці відкритих проектів, причому не обов'язково саме PostgreSQL. Щоб не писати лонгридов, стаття розбита на частини.

Зацікавлених прошу пройти під кат.
Читати далі →

Інтеграція PostgreSQL з MS SQL Server

Інтеграція PostgreSQL з MS SQL Server
попередній статті мій колега Дмитро Васильєв описав налаштування інтеграції PostgreSQL з MySQL і описав, як більш ефективно виконувати деякі запити.
У цій статті я хотів би описати настройку підключення PostgreSQL, працює під управлінням Linux, MS SQL Server. А також, як імпортувати всі таблиці певної схеми бази даних MS SQL Server в PostgreSQL без опису структури кожної таблиці.

Читати далі →

Інтеграція PostgreSQL з іншими СУБД: робимо запити в MySQL

Нерідко буває так, що у великому проекті в силу тих чи інших причин, найчастіше історичних, хоча буває по-всякому — його частини можуть використовувати різні СУБД для зберігання і пошуку критично важливих даних. У числі іншого, цьому сприяє різноманітності конкуренція і розвиток технологій, але, так чи інакше, взаємодія між СУБД описує стандарт SQL/MED 2003 (Management of External Data), який вводить визначення Foreign Data Wrappers (FDW) і Datalink.
Перша частина стандарту пропонує засоби для читання даних як набору реляційних таблиць під управлінням одного чи кількох зовнішніх джерел; FDW також може представляти можливість використовувати SQL-інтерфейс для доступу до SQL даними, таким, як файли або, наприклад, список листів в поштовій скриньці.
Друга частина, Datalink, дозволяє управляти віддаленим SQL-сервером.
Ці дві частини були реалізовані ще в PostgreSQL 9.1 і називаються FDW і dblink відповідно. FDW в PostgreSQL зроблений максимально гнучко, що дозволяє розробляти wrapper'и для великої кількості зовнішніх джерел. В даний час мені відомі такі FDW, як PostgreSQL, Oracle, SQL Server, MySQL, Cassandra, Redis, RethinkDB, Ldap, а також FDW до файлів типу CSV, JSON, XML і т. п.
У нашій статті ми поговоримо про те, як налаштувати підключення PostgreSQL до MySQL і ефективно виконувати отримані запити.

Читати далі →