Oracle

Oracle - це не найпопулярніша база даних, але найвідоміша. Хоча можна стверджувати, що найпопулярніша. Дивлячись як рахувати . Якщо просто дивитися на кількість компаній, то СУБД MySQL найпопулярніша: вона досить хороша і повністю безкоштовна :)

Але ж можна вважати і по-іншому. Якщо є одна компанія з мільйоном клієнтів , яка використовує Oracle, та 5 компанією з сотнею клієнтів , які використовують MySQL, то виходить, що Oracle обслуговує мільйон клієнтів, а MySQL – лише 500 осіб.

Загалом, якщо взяти великі компанії, які мають гроші, і дивитися, яку СУБД вони обирають, то десь третина всіх компаній у світі сидять на Oracle. Якось так.

У тебе, як у програміста, більше шансів працювати в майбутньому на СУБД Oracle, ніж на MySQL. В інтернеті є чудове відео, яке демонструє, як змінювалася популярність СУБД за останні 20 років.

MySQL

Друга за популярністю серед усіх СУБД – це MySQL. І вона перша за популярністю серед усіх безкоштовних СУБД. Тепер ти розумієш, чому ми вчимо SQL саме на її прикладі. Хайп хайпом, а бізнес досить консервативний у виборі інфраструктури.

В принципі, про MySQL ми вже говорабо. Колись їх купила компанія Sun , потім – Oracle . Яку дуже складно назвати корпорацією добра.

Саме вони після придбання Sun постійно намагаються зробити Java платною.

Так, компанія Sun володіла і Java, і MySQL, перш ніж їх купила Oracle.

Цей факт і репутація Oracle трохи налякала розробників MySQL, які вирішабо створити fork проекту MySQL і назвали його MariaDB.

MariaDB – це фактично клон MySQL з деякими особливостями реалізації, які дозволяють обійти нюанси закриття патентами та ліцензіями.

Однак у компанії Oracle теж не дурні сидять. Щоб клієнти та розробники не втекли на MariaDB, компанія Oracle продовжує фінансувати розвиток та розробку MySQL, який продовжує залишатися безкоштовним.

І щоб всидіти на двох стільцях, для корпоративних клієнтів був випущений платний MySQL Enterprise , який нічим не відрізняється від MySQL Community Edition , але чиї ліцензії краще підходять для бізнесу.

PostgreSQL

Ще одна цікава СУБД - це PostgreSQL (читається як "поустгрес-кью-ель").

Це ще одна безкоштовна СУБД, яка дуже швидко набирає популярності останніми роками. Хоча до MySQL їй ще далеко.

PostgreSQL насамперед орієнтована на розподілену роботу. Її сильними сторонами вважаються:

  • Високопродуктивні та надійні механізми транзакцій та реплікації
  • Система вбудованих мов програмування, що розширюється: PL SQL, PL JS, PL Python, …
  • Наслідування таблиць
  • Можливість індексування геометричних (зокрема, географічних) об'єктів
  • Вбудована підтримка слабоструктурованих даних у форматі JSON з можливістю їх індексації
  • Розширюваність (можливість створювати нові типи даних, типи індексів, мови програмування, модулі розширення, підключати будь-які зовнішні джерела даних)

А знаєш, чому вона так називається? Діло було так…

Десь 50 років тому, на початку 70-х років в університеті Берклі почали розробляти свою реляційну СУБД та назвали її Ingres .

На початку 80-х із проекту вийшов професор Майкл Стоунбрейкер, який вирішив написати свою власну СУБД із блек-джеком та куртизанками. Він та його студенти почали писати свою СУБД, яку назвали просто Post Ingres , що в майбутньому скоротабо до Postgres .

Оскільки назва Postgres ні про що нікому не говорила, у нього було вирішено додати суфікс SQL. Ось так і вийшов PostgresSQL, який відразу втратив подвійну S, і став писатися як PostgreSQL. Але вимовляєш назву, потрібно читати її як PostgresQL.

NoSQL

Якщо ти цікавишся базами даних, то точно чув про NoSQL бази даних . Поспішаю тебе засмутити: NoSQL - це чисто маркетингова назва , і SQL там є. Він просто урізаний.

На що це схоже? Ось уяви хорошу веб-сторінку, написану на HTML, CSS та JavaScript... яку відкрабо на браузері 1995 року. Там працює від сабо 10% CSS і взагалі не підтримується JavaScript. І цей новий урізаний стандарт назвали… NoHtml .

Наприклад, в NoSQL можуть не підтримуватися JOIN між таблицями, і тоді доводиться або емулювати це на рівні Java-коду в програмі, або зберігати всі дані пов'язаних таблиць в одній величезній таблиці.

І якщо у випадку з NoHtml ми ніби відкотабося на 20 років тому, то у випадку з NoSQL відкат відбувається десь на 40 років.

Візьмемо, наприклад, NoSQL базу даних Cassandra , яку використовує Facebook для зберігання даних мільярдів користувачів. Власне, вони її розробабо і потім виклали як OpenSource проект.

Почнемо з найцікавішого - весь код СУБД написаний на Java . Код C++ швидше за все працював би швидше, але там було б більше помилок. А код на Java простіше підтримувати та розвивати.

Загальний формат запитів до СУБД Casandra виглядає дуже знайомо:

  SELECT колонки  
  FROM таблиця 
  WHERE умова
  GROUP BY колонки 
  ORDER BY сортування 
  LIMIT кількість

Як бачиш, SQL тут є. А знаєш, чого тут не вистачає? Оператора JOIN ! Можна вибирати дані лише з однієї таблиці :)

Ось вам цитата з офіційної документації:

Ви не можете працювати joins в Cassandra . Якщо ви маєте налагоджений формат даних і хотіли, що ви потребуєте деякого часу, щоб зробити, ви повинні зробити їх в роботі на клієнтській стороні , або створабо деформалізований 2-ий table , що становлять join results for you.