Download - PostgreSQL: ком´юніті чи бізнес - 2016
PostgreSQL: ком´юніті чи бізнес
Історія розвитку, розробка й впровадження
1
Голуб Павлоfacebook.com/pasha.golubtwitter.com/[email protected]
20162
GOLUB!!! SLONIK!!!
3
4
План доповіді
● Історія розвитку○ Академічний Postgres○ Версії 7.х○ Версії 8.х○ Версії 9.х
● Хакаєм Postgres○ Для чого○ Що потрібно вміти○ Спільнота○ Місце докладання зусиль○ Життя патча
● Бізнес с Postgres○ Компанії○ Послуги
● Питання і відповіді5
Як правильно вимовляти PostgreSQL
● SQL вимовляється як [es-que-ell] або як [sequel]
● PostgreSQL вимовляється як [post-GRES-que-ell]
6
Як НЕ правильно вимовляти PostgreSQL
Постгрі
7
Історія розвитку
8
Ingres
● Де?
○ University of California, Berkeley● Коли?
○ Початок 70х років● Хто?
○ Michael Stonebraker та Eugene Wong● Що?
○ INteractive Graphics REtrieval System● Ingres вимовляється як [ɪŋˈɡrɛs]
9
University Postgres
● Де?
○ University of California, Berkeley● Коли?
○ Початок — 1985, прототип — 1988р.● Хто?
○ Michael Stonebraker та його студенти
10
University Postgres
● Реалізація підтримки типів користувача
● Таблиці називались класи
● Постгрес використав багато ідей Інгрес
● Але не використав жодного рядку коду
● Вбудована мова POSTQUEL
● Пізніше проект був комерціолізований як Illustra
○ придбаний компанією Informix○ інтегрован в їх продукт Universal Server○ в 2001 придбаний IBM за 1 міліард $
11
University Postgres
● Мова перевершувала тогочасний SQL
● Але не задовольняла потреби галузі
● Кожна команда оперувала рядковою змінною (tuple variable)
● Синтаксис був більш “нормалізований”, ніж у SQL
● Мала вбудовані команди для імпорту\експорту даних
PostQUEL
12
University Postgres
range of P is PRACOWNICY
retrieve into W
(COMP = P.PLACA / (P.WIEK - 18))
where P.NAZWISKO = "Kowalski"
PostQUEL
13
University Postgres
create student(name = c10, age = i4, sex = c1, state = c2)
range of s is student
append to s (name = "philip", age = 17, sex = "m", state = "FL")
retrieve (s.all) where s.state = "FL"
replace s (age=s.age+1)
delete s where s.name="philip"
copy student(name=c0, comma=d1, age=c0, comma=d1, sex=c0, nl=d1)
into "/student.txt"
PostQUEL
14
Postgres95
● В 1994р. Andrew Yu та Jolly Chen змінили мову на SQL
● Впровадили новий консольний клієнт psql
● Опубликували вихідний код в web
● Postgres95 це наслідник останньої офіційної гілки Postgres v.4.2
● В 1996р. Marc Fournier з Hub.org піднімає перший сервер для розробки
● Першими контріб’юторами стали Bruce Momjian та Вадим Міхєєв
● Postgres стає повноцінним open source проектом
15
PostgreSQL
● В 1996р. стає зрозумілим невдалий вибір назви Postgres95
● Вирішено дати нове ім’я PostgreSQL
● Повернутися до нумерування версій починаючи з проекту Postgres
● Перша гілка оновленого PostgreSQL мала версію 6.0
● Функціонує сайт www.postgresql.org
● Документація доступна для версій, починаючи з 6.3 http://www.
postgresql.org/docs/manuals/archive/
16
17
PostgreSQL 7.x
● Foreign Keys● JOINs● Schemas● Full-text indexing● Реалізація WAL (write ahead log)● TOAST (The Oversized-Attribute Storage Technique)● Процедурні мови, включаючи PL/PGSQL● i18n та l10n ● Prepared Queries● Interfaces● SQL-standard information schema
18
19
PostgreSQL 8.x
● Підтримка Windows● Savepoints● PITR (Point-In-Time Recovery)● Tablespaces● Role system that replaces users and groups● Index creation without blocking concurrent● Support for the SQL/XML● ENUM and UUID● Windowing Functions● Common Table Expressions and Recursive Queries
20
21
PostgreSQL 9.x
● Built-in replication● Deferrable unique constraints● Exclusion constraints● pg_upgrade● Foreign tables● Extensions● Index-only scans● Range data types● JSON and JSONB data types● Materialized views● Row-level security control● BRIN and SP-GIST indexes
22
23
Хакаєм Постгрес
24
Хакаєм Постгрес
● Для чого?○ Бази даних — це круто○ Участь в ком´юніті, навіть в якості рев´ювера○ Стати кращим программістом, код ПГ — це взірець○ Можливість заробити копійку
25
Хакаєм Постгрес
● Що маю вміти?○ Знати plain C○ ОС не важлива○ IDE не важлива○ Все інше з´явиться з часом
26
Хакаєм Постгрес
● Взаємодія з ком´юніті○ Все спілкування відбувається в поштових розсилках
■ pgsql-general — загальна розсилка для всіх■ pgsql-hackers — головна розсилка■ pgsql-bugs — для роботи над багами■ pgsql-docs — робота над документацією
○ Ви маєте чітко висловлювати свою думку. Англійською○ Хороший програміст — завжди хороший письменик○ Для нагальних питань використовується IRC
27
Хакаєм Постгрес
● Шо можу зробити○ Код (Ядро, Баги, Інтерфейси, Додатки)○ Тестування○ Пакети (VM, vagrant, docker, liveCD etc.)○ Програми○ Переклад○ Мануали, статті, виступи, advocacy
28
Життя патча
29
Життя патча
30
Життя патча
● Дослідження ○ чи реалізовано?○ чи обговорювалось?○ чи потрібне?○ чи частина стандарту?○ чи можливе?○ яку користь принесе?○ скільки зусиль потрібно для підтримування?
31
Життя патча
● Пропозиція до спільноти на pgsql-hackers○ Отримуємо зворотній зв’язок
● Розробка специфікації○ Отримуємо зворотній зв´язок
32
Життя патча
● Реалізуємо WIP патчи○ Отримуємо зворотній зв’язок
● Реалізуємо бета-патч для комміт фесту○ Отримуємо зворотній зв’язок
33
Життя патча
● Отримуємо рев´ю● Патч приймається в реліз● Пишемо документацію
34
Бізнес. Як заробляти?
35
Бізнес. Як заробляти?
36
Бізнес. Як заробляти?
● Хостинг ● Обслуговування і налаштування● Тюнінг під задачі● Використання в своїх рішеннях● Створення статей і матеріалів● Курси і навчання
37
Запитання і відповіді
38