Система управления базами данных

Материал из Documentation.

(Перенаправлено с СУБД)
Перейти к: навигация, поиск



Система управления базами данных (СУБД) — ком­плекс про­грамм, по­зво­ляю­щих соз­дать ба­зу дан­ных (БД) и ма­ни­пу­ли­ро­вать дан­ны­ми (встав­лять, об­нов­лять, уда­лять и вы­би­рать). Обес­пе­чи­ва­ет безо­пас­ность, на­дёж­ность хра­не­ния и це­ло­ст­ность дан­ных, а так­же пре­дос­тав­ля­ет сред­ст­ва для ад­ми­ни­ст­ри­ро­ва­ния БД. СУБД с по­мо­щью ком­пи­ля­то­ра язы­ка за­про­сов об­ра­ба­ты­ва­ет об­ра­ще­ния к БД от поль­зо­ва­те­лей, про­ве­ря­ет кор­рект­ность по­сту­паю­щих опе­ра­то­ров и на ос­но­ве ме­та­дан­ных (све­де­ния о со­ста­ве дан­ных) фор­ми­ру­ет од­но или неск. про­це­дур­ных пред­став­ле­ний опе­ра­то­ра (пла­нов вы­пол­не­ния). Наи­бо­лее эф­фек­тив­ный план ис­пол­ня­ет­ся в СУБД при по­мо­щи внутр. под­сис­те­мы (яд­ра СУБД), под­дер­жи­ваю­щей ин­тер­фейс дос­ту­па к дан­ным на уров­не их отд. эле­мен­тов (за­пи­сей). Яд­ро СУБД обес­пе­чи­ва­ет бу­фе­ри­за­цию дан­ных — кэ­ши­ро­ва­ние, син­хро­ни­за­цию дос­ту­па к дан­ным и управ­ле­ние тран­зак­ция­ми (ко­рот­кий во вре­ме­ни цикл взаи­мо­дей­ст­вия объ­ек­тов, вклю­чаю­щий за­прос — вы­пол­не­ние за­да­ния — от­вет), а так­же жур­на­ли­за­цию из­ме­не­ний БД (со­хра­не­ние ис­то­рии). Ка­ж­дая СУБД ос­но­вы­ва­ет­ся на не­ко­то­рой мо­де­ли дан­ных (напр., ре­ля­ци­он­ной). В боль­шин­ст­ве совр. СУБД внеш­ний ин­тер­фейс обыч­но ос­но­вы­ва­ет­ся на ис­поль­зо­ва­нии спец. язы­ка (напр., SQL, Structured Query Language — стан­дарт­ный язык за­про­сов, язык оп­ре­де­ле­ния струк­тур и ма­ни­пу­ли­ро­ва­ния дан­ны­ми), в ко­то­ром от­ра­жа­ют­ся осн. чер­ты мо­де­ли дан­ных.[1]

Содержание

[править] Виды

СУБД клас­си­фи­ци­ру­ют: на се­те­вые, ие­рар­хические, ре­ля­ци­он­ные (и SQL-ори­енти­ро­ван­ные), объ­ект­но ори­ен­ти­ро­ван­ные, XML-ори­ен­ти­ро­ван­ные (англ. eXtensible Markup Language — рас­ши­ряе­мый язык раз­мет­ки) и др., то есть по мо­де­ли дан­ных; уни­вер­саль­ные и спе­циа­ли­зир., ко­то­рые ори­ен­ти­ро­ва­ны на эф­фек­тив­ную под­держ­ку од­но­го клас­са ин­фор­мац. сис­тем (напр., тран­закц. или ана­ли­тич.); файл-сер­вер­ные (БД хра­нят­ся в фай­лах спе­циа­ли­зир. фай­ло­во­го сер­ве­ра), кли­ент-сер­вер­ные (все осн. ком­по­нен­ты СУБД вы­пол­ня­ют­ся на отд. сер­ве­ре, на ко­то­ром хра­нит­ся и БД, а на кли­ент­ской час­ти вы­пол­ня­ет­ся код при­ло­же­ния), встраи­вае­мые (СУБД тес­но свя­за­на с при­клад­ной про­грам­мой и пол­но­стью вы­пол­ня­ет­ся на том же ком­пь­ю­те­ре, не тре­буя проф. ад­ми­ни­ст­ри­ро­ва­ния); од­но­про­цес­сор­ные (не ис­поль­зу­ют ап­па­рат­ные воз­мож­но­сти па­рал­ле­лиз­ма, бы­ли рас­про­стра­не­ны до по­яв­ле­ния мно­го­ядер­ных про­цес­со­ров), па­рал­лель­ные с об­щей па­мя­тью (обес­пе­чи­ва­ют меж­за­прос­ный или внут­ри­за­прос­ный па­рал­ле­лизм с ис­поль­зо­ва­ни­ем не­сколь­ких ядер), па­рал­лель­ные с об­щи­ми дис­ка­ми (неск. эк­зем­п­ля­ров СУБД ра­бо­та­ют в раз­ных уз­лах вы­чис­лит. кла­сте­ра, но об­ра­ща­ют­ся к об­щей дис­ко­вой под­сис­те­ме, в ко­то­рой хра­нит­ся БД) и па­рал­лель­ные без ис­поль­зо­ва­ния об­щих ре­сур­сов СУБД (неск. СУБД ра­бо­та­ют в раз­ных уз­лах кла­сте­ра, ка­ж­дый со сво­им раз­де­лом БД, что обес­пе­чи­ва­ет го­ри­зон­таль­ное мас­шта­би­ро­ва­ние при рос­те объ­ё­ма дан­ных).[2]

[править] История

Пер­вые СУБД (нач. 1960-х гг.) бы­ли ос­но­ва­ны на ие­рар­хич., се­те­вой и др. ран­них мо­де­лях дан­ных. В нач. 1970-х гг. Э. Кодд (США) пред­ло­жил но­вый — ре­ля­ци­он­ный — под­ход к ор­га­ни­за­ции БД и СУБД, на ос­но­ве ко­то­ро­го в 1970-е гг. вы­пол­не­ны экс­пе­рим. про­ек­ты System R (IBM) и Ingres (Ка­ли­фор­ний­ский ун-т в Берк­ли) и за­ло­же­ны ос­но­вы бу­ду­щих тех­но­ло­гий (язык SQL, прин­ци­пы оп­ти­ми­за­ции за­про­сов, ме­то­ды управ­ле­ния тран­зак­ция­ми и др.). В 1980-е гг. раз­ра­бо­та­ны объ­ект­но ори­ен­ти­ро­ван­ные, объ­ект­но ре­ля­ци­он­ные и пер­вые ком­мерч. ре­ля­ци­он­ные СУБД.[3]

В 1990-х годах поя­вил­ся ряд раз­ви­тых уни­вер­саль­ных SQL-ори­ен­ти­ро­ван­ных СУБД с объ­ект­но ре­ля­ци­он­ны­ми воз­мож­но­стя­ми (In­for­mix Universal Server, Oracle8, DB2, Universal Database). При­нят стан­дарт SQL:1999, в ко­то­ром эти воз­мож­но­сти, а так­же все осн. сред­ст­ва SQL-ори­ен­тиро­ван­ных СУБД бы­ли окон­ча­тель­но со­гла­со­ва­ны и ут­вер­жде­ны. Од­но­вре­мен­но раз­ви­ва­лись объ­ект­но ори­ен­ти­ро­ван­ные СУБД.[4]

В начале XXI века М. Стон­брей­кер (США) обос­но­вал ко­нец эпо­хи уни­вер­саль­ных СУБД и пе­ре­ход к спе­ци­а­ли­зир., ори­ен­ти­ро­ван­ным на под­дер­ж­ку отд. клас­сов ин­фор­ма­ци­он­ных сис­тем — XML-ори­ен­ти­ро­ван­ные (напр., Tamino, Sedna), по­то­ко­вые (Stream­ba­se), ана­ли­тические (Vertica, Greenplum), тран­закц. СУБД (VoltDB). Из-за взры­во­об­раз­но­го рос­та дан­ных (BigData) ста­ла ак­ту­аль­ной воз­мож­ность го­ри­зон­таль­но­го мас­шта­би­ро­ва­ния; в ре­зуль­та­те прак­ти­че­ски все совр. СУБД яв­ля­ют­ся мас­сив­но-па­рал­лель­ны­ми. Про­бле­ма BigData при­ве­ла к по­яв­ле­нию ря­да сис­тем ка­тего­рии NoSQL, раз­ра­бот­чи­ки ко­то­рых опи­ра­ют­ся на опыт в об­лас­ти рас­пре­де­лён­ных сис­тем (со­во­куп­ность ло­ги­че­ски взаи­мо­свя­зан­ных баз дан­ных, рас­пре­де­лён­ных по уз­лам ком­пь­ю­тер­ной се­ти) и не сле­ду­ют ка­но­нам тра­ди­ци­он­ных СУБД. В СССР и России раз­ра­ба­ты­ва­ли СУБД ИНЕС и НИКА (1980-е гг., Ин-т сис­тем­но­го ана­ли­за РАН), ЛИНТЕР (ком­па­ния РЕЛЭКС, Во­ро­неж, с кон. 1980-х гг.), Sedna (2000-е гг., Ин-т сис­тем­но­го про­грам­ми­ро­ва­ния РАН).[5]

[править] Типы

[править] Oracle

Система Oracle популярна у разработчиков, проста в использовании, у нее понятная документация, поддержка длинных наименований, JSON, улучшенный тег списка и Oracle Cloud.[6]

Разработчик: Oracle Corporation. Написана на Assembly, C, C++.[7]

Особенности:[8]

  • Обрабатывает большие данные.
  • Поддерживает SQL, к нему можно получить доступ из реляционных БД Oracle.
  • Oracle NoSQL Database с Java/C API для чтения и записи данных.

[править] MySQL

MySQL работает на Linux, Windows, OSX, FreeBSD и Solaris.[9]

Лицензия GPL с открытым исходным кодом позволяет модифицировать ПО MySQL.[10]

Эта система управления базами данных использует стандартную форму SQL. Утилиты для проектирования таблиц имеют интуитивно понятный интерфейс. MySQL поддерживает до 50 миллионов строк в таблице. Предельный размер файла для таблицы по умолчанию 4 ГБ, но его можно увеличить. Поддерживает секционирование и репликацию, а также Xpath и хранимые процедуры, триггеры и представления.[11]

СУБД MySQL есть практически на любом хостинге. Простая в установке, работает нормально без особых настроек. В любом языке программирования, фреймворке, CMS, CMF и так далее — есть интеграция с MySQL.[12]

Разработчик: Oracle Corporation. Написана на C, C++.[13]

Особенности:[14]

  • Масштабируемость;
  • Лёгкость использования;
  • Поддержка Novell Cluster;
  • Поддержка многих операционных систем.

Минусы MySQL:[15]

  • Посредственная производительность;
  • Изменение структуры данных может быть довольно трудоёмким процессом, особенно при большом количество связей между данными в разных таблицах и даже при простом добавлении полей;
  • Чувствительность к нестабильности сервера. Особенно это влияет при использовании XtraDB от Percona. Если неправильно завершить MySQL, можно настолько поломать таблицы и базы данных, что восстановить можно будет только из полного бекапа.

[править] Microsoft SQL Server

Microsoft SQL Server — самая популярная коммерческая СУБД. Она привязана к Windows. Зависит от платформы. И графический интерфейс, и программное обеспечение основаны на командах. Поддерживает SQL, непроцедурные, нечувствительные к регистру и общие языки баз данных.[16]

Разработчик: Microsoft Corporation. Написана на C, C++.[17]

Особенности:[18]

  • Высокая производительность;
  • Зависимость от платформы;
  • Возможность установить разные версии на одном компьютере;
  • Генерация скриптов для перемещения данных.

[править] PostgreSQL

PostgreSQL — масштабируемая объектно-реляционная база данных, работающая на Linux, Windows, OSX и некоторых других системах. В PostgreSQL 10 есть такие функции, как логическая репликация, декларативное разбиение таблиц, улучшенные параллельные запросы, более безопасная аутентификация по паролю на основе SCRAM-SHA-256.[19]

PostgreSQL — очень старая СУБД. По мнение многих, очень стабильная СУБД, её практически невозможно уронить, порушить таблицы как в MySQL.[20]

Разработчик: PostgreSQL Global Development Group.Написана на C. Используется в компаниях: Apple, Cisco, Fujitsu.[21]

Особенности:[22]

  • Поддержка табличных пространств, а также хранимых процедур, объединений, представлений и триггеров;
  • Восстановление на момент времени (PITR);
  • Асинхронная репликация.

[править] MongoDB

MongoDB — самая популярная NoSQL СУБД. Лучше всего подходит для динамических запросов и определения индексов. Гибкая структура, которую можно модифицировать и расширять. Поддерживает Linux, OSX и Windows, но размер БД ограничен 2,5 ГБ в 32-битных системах. Использует платформы хранения MMAPv1 и WiredTiger.[23]

Разработчик: MongoDB Inc. в 2007 году. Написана на C++.[24]

Особенности:[25]

  • Высокая производительность;
  • Автоматическая фрагментация;
  • Работа на нескольких серверах;
  • Поддержка репликации Master-Slave;
  • Данные хранятся в форме документов JSON;
  • Возможность индексировать все поля в документе;
  • Поддержка поиска по регулярным выражениям.

[править] DB2

Работает на Linux, UNIX, Windows и мейнфреймах. Идеально подходит для хост-сред IBM.[26]

Разработчик: IBM. Написана на C, C++, Assembly.[27]

[править] Microsoft Access

Microsoft Access — система управления базами данных от Microsoft, которая сочетает в себе реляционное ядро БД Microsoft Jet с графическим интерфейсом пользователя и инструментами разработки ПО.[28]

Производительность не рассчитана на большие проекты. В MS Access можно использовать C, C#, C++, Java, VBA и Visual Rudimental.NET. Access хранит все таблицы БД, запросы, формы, отчёты, макросы и модули в базе данных Access Jet в виде одного файла.[29]

Разработчик: Microsoft Corporation.[30]

Особенности:[31]

  • Можно использовать VBA для создания многофункциональных решений с расширенными возможностями управления данными и пользовательским контролем;
  • Импорт и экспорт в форматы Excel, Outlook, ASCII, dBase, Paradox, FoxPro, SQL Server и Oracle;
  • Формат базы данных Jet.

[править] Redis

Redis — СУБД с открытым исходным кодом, которая снабжена механизмами журналирования и снимков. Поддерживаются списки, строки, хэши, наборы. Используется для БД, брокеров сообщений и кэшей. Все операции в Redis атомарные. Система написана на языке C и поддерживается практически всеми языками программирования.[32]

Разработчик: Salvatore Sanfilippo.[33]

Чаще всего СУБД Redis используют в качестве кеширующего слоя для работы с данными из другой, более медленной СУБД. Редко, но всё же может использоваться в качестве самостоятельно БД для данных. При этом Redis умеет работать с разными типами данных, в том числе списками, очередями. Работает в памяти, очень быстрая, умеет сохранять данные на диске, причём с поддержкой дозаписи (гораздо меньше нагружает диск) и загружать при запуске.[34]

Особенности:[35]

  • Автоматическая обработка отказа;
  • Транзакции;
  • Сценарии LUA;
  • Вытеснение LRU-ключей;
  • Поддержка Publish/Subscribe.

[править] Apache Cassandra

Apache Cassandra спроектирована и работает как распределенная NoSQL СУБД для больших данных. Данные хранит в виде семейства столбцов.[36]

СУБД активно используется в банковском деле, финансах, а также в Facebook и Twitter. Поддерживает Windows, Linux и OSX. Для запросов к БД Cassandra используется SQL-подобный язык — Cassandra Query Language (CQL).[37]

Разработчик: Apache Software Foundation. Написана на Java.[38]

Особенности:[39]

  • Линейная масштабируемость;
  • Быстрое время отклика;
  • Поддержка MapReduce и Apache Hadoop;
  • Максимальная гибкость;
  • P2P архитектура.

[править] Ссылки

[править] Примечания

  1. [1]
  2. [2]
  3. [3]
  4. [4]
  5. [5]
  6. [6]
  7. [7]
  8. [8]
  9. [9]
  10. [10]
  11. [11]
  12. [12]
  13. [13]
  14. [14]
  15. [15]
  16. [16]
  17. [17]
  18. [18]
  19. [19]
  20. [20]
  21. [21]
  22. [22]
  23. [23]
  24. [24]
  25. [25]
  26. [26]
  27. [27]
  28. [28]
  29. [29]
  30. [30]
  31. [31]
  32. [32]
  33. [33]
  34. [34]
  35. [35]
  36. [36]
  37. [37]
  38. [38]
  39. [39]
Личные инструменты