JavaRush/Курсы/Модуль 4. Работа с БД/Популярные базы данных (СУБД)

Популярные базы данных (СУБД)

Открыта

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! Можно выбирать данные только из одной таблицы :)

Вот вам цитата из официальной документации:

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.

Комментарии (3)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Станислав Future
Уровень 39
21 апреля 2023, 07:36
Вот респект автору. Уже вроде не один проект написал, знаешь несколько БД, а вот в таких материалах много нового для себя узнаешь, что дополняет твою картину мира
SchlechtGut
Уровень 51
14 июня 2023, 11:16
а что вы нового могли узнать из этой статьи?
рост
Уровень 32
22 февраля 2023, 14:29
для тех кто как я перевод: Вы не можете выполнять joins в Cassandra. Если вы разработали модель данных и обнаружили, что вам нужно что-то вроде Join, вам придется либо выполнить работу на стороне клиента, либо создать вторую денормализованную таблицу, которая представляет для вас результаты join'ов.