1. Oracle

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

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

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

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

2. 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, але чиї ліцензії краще підходять для бізнесу.

2. PostgreSQL

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

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

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

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

А знаєш, чому вона так називається? Ось як все було...

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

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

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

4. 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! Можна вибирати дані лише з однієї таблиці :)

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

You cannot perform joins in Cassandra. If you have designed a data model and find that you need something like a join, you’ll have to either do the work on the client side, or create a denormalized second table that represents the join results for you.