Базы данных SQL, NoSQL и различия в моделях баз данных. Sql бд


Что такое база данных? Что такое SQL?

В этом уроке вы узнаете,

Прежде чем мы узнаем о базе данных, давайте разобраться –

Что такое данные?

В простых словах данные могут быть фактами, связанными с любым рассматриваемым объектом.

Например, ваше имя, возраст, высота, вес и т. Д. – это некоторые данные, относящиеся к вам.

Также можно считать изображение, изображение, файл, pdf и т. Д.

Что такое база данных?

База данных представляет собой систематический сбор данных. Базы данных поддерживают хранение и обработку данных. Базы данных упрощают управление данными. Давайте обсудим несколько примеров.

В онлайновом телефонном справочнике определенно будет использоваться база данных для хранения данных, относящихся к людям, номерам телефонов, другим контактным данным и т. Д.

Очевидно, что ваш поставщик услуг электроснабжения использует базу данных для управления биллингами, проблемами, связанными с клиентом, для обработки данных о сбоях и т. Д.

Давайте также рассмотрим facebook. Он должен хранить, манипулировать и представлять данные, касающиеся членов, друзей, членов, сообщений, рекламных объявлений и многое другое.

Мы можем предоставить бесчисленное множество примеров использования баз данных.

 Что такое система управления базами данных (СУБД)?

Система управления базами данных (СУБД) представляет собой набор программ, которые позволяют своим пользователям получать доступ к базе данных, манипулировать данными, представлять / представлять данные.

Это также помогает контролировать доступ к базе данных.

Системы управления базами данных не являются новой концепцией и, как таковые, были впервые реализованы в 1960-х годах.

Интегрированный хранилище данных ( BIS) Чарльза Бахмена считается первой СУБД в истории.

Со временем технологии базы данных значительно выросли, а использование и ожидаемые функциональные возможности баз данных были значительно увеличены.

Типы СУБД

Давайте посмотрим, как изменилось семейство СУБД с течением времени. Следующая диаграмма показывает эволюцию категорий СУБД.

Существует 4 основных типа СУБД. Давайте подробно рассмотрим их.

  • Иерархический – этот тип СУБД использует отношения”родитель-ребенок” для хранения данных. Этот тип СУБД редко используется в настоящее время. Его структура подобна дереву с узлами, представляющими записи и ветви, представляющие поля. Реестр Windows, используемый в Windows XP, является примером иерархической базы данных. Параметры конфигурации хранятся в виде древовидных структур с узлами.
  • Сетевая СУБД – этот тип СУБД поддерживает многие-многие отношения. Обычно это приводит к созданию сложных структур баз данных. RDM Server является примером системы управления базами данных, которая реализует сетевую модель.
  • Реляционные СУБД – этот тип СУБД определяет отношения базы данных в виде таблиц, также известных как отношения. В отличие от сетевой СУБД, СУБД не поддерживает многие отношения. Реляционная СУБД обычно имеет предопределенные типы данных, которые они могут поддерживать. Это самый популярный тип СУБД на рынке. Примерами систем управления реляционными базами данных являются база данных MySQL, Oracle и Microsoft SQL Server.
  • Объектно-ориентированная СУБД – этот тип поддерживает хранение новых типов данных. Данные, которые необходимо сохранить, находятся в форме объектов. Объекты, которые будут храниться в базе данных, имеют атрибуты (т.е. пол, ager) и методы, которые определяют, что делать с данными. PostgreSQL является примером объектно-ориентированной реляционной СУБД.

Что такое SQL?

Структурированный язык запросов (SQL), выраженный как”SQL” или иногда как”See-Quel ”, на самом деле является стандартным языком для работы с реляционными базами данных.

Программирование SQL может эффективно использоваться для вставки, поиска, обновления, удаления записей базы данных.

Это не означает, что SQL не может делать ничего сверх этого.

На самом деле он может многое делать, включая, но не ограничиваясь, оптимизацию и обслуживание баз данных.

Реляционные базы данных, такие как база данных MySQL, Oracle, сервер Ms SQL, Sybase и т. Д., Используют SQL! Как использовать синтаксисы sql?

Синтаксисы SQL, используемые в этих базах данных, почти схожи, за исключением того факта, что некоторые используют несколько разных синтаксисов и даже проприетарные синтаксисы SQL.

Пример SQL

SELECT * FROM Members WHERE Возраст> 30

SELECT * FROM Members WHERE Возраст> 30

Что такое NoSQL?

NoSQL – это предстоящая категория систем управления базами данных. Его основной характеристикой является несоблюдение концепций реляционных баз данных. NOSQL означает”Не только SQL”.

Концепция баз данных NoSQL выросла с помощью интернет-гигантов, таких как Google, Facebook, Amazon и т. Д., Которые занимаются гигантскими объемами данных.

Когда вы используете реляционную базу данных для больших объемов данных, система начинает медленно замедляться с точки зрения времени отклика.

Чтобы преодолеть это, мы могли бы, конечно,”расширить” наши системы, модернизируя существующее оборудование.

Альтернативой вышеупомянутой проблеме было бы распределить нагрузку на базу данных на нескольких хостах при увеличении нагрузки.

Это называется”масштабирование”.

База данных NOSQL – это нереляционные базы данных, которые масштабируются лучше, чем реляционные базы данных, и разработаны с учетом веб-приложений.

Они не используют SQL для запроса данных и не следуют строгим схемам, таким как реляционные модели. С NoSQL функции ACID (Atomicity, Consistency, Isolation, Durability) не гарантируются всегда

Почему имеет смысл изучать SQL после NOSQL?

С преимуществами баз данных NOSQL, описанных выше, которые лучше масштабируются, чем реляционные модели, вы можете подумать, почему все еще нужно узнать о базе данных SQL?

Ну, базы данных NOSQL являются своего рода узкоспециализированными системами и имеют особое использование и ограничения. NOSQL подходит больше для тех, кто обрабатывает огромные объемы данных. Подавляющее большинство используют реляционные базы данных и связанные с ними инструменты.

Реляционные базы данных имеют следующие преимущества перед базами данных NOSQL;

  • SQL (реляционные) базы данных имеют зрелую модель хранения и управления данными. Это важно для корпоративных пользователей.
  • Базы данных SQL поддерживают понятие представлений, которые позволяют пользователям просматривать только те данные, которые им разрешено просматривать. Данные, которые им не разрешены, скрыты от них.
  • SQL-базы данных поддерживают хранимую процедуру sql, которые позволяют разработчикам баз данных реализовать часть бизнес-логики в базе данных.
  • Базы данных SQL имеют лучшие модели безопасности по сравнению с базами данных NoSQL.

Мир не отклонился от использования реляционных баз данных. Существует растущий спрос на специалистов , которые могут обрабатывать реляционных баз данных. Таким образом, изучение баз данных и SQL по-прежнему имеет свои достоинства.

 

Резюме

  • СУБД означает систему управления базами данных.
  • У нас есть четыре основных типа СУБД: иерархический, сетевой, реляционный, объектно-ориентированный
  • Наиболее широко используемой СУБД является реляционная модель, которая сохраняет данные в табличных форматах. Он использует SQL в качестве стандартного языка запросов
  • Язык SQL используется для запроса Sql базы данных
  • Подход к базе данных имеет много преимуществ, когда речь идет о хранении данных по сравнению с традиционными системами на основе плоских файлов

Вы могли бы:

guru99.ru

Базы данных SQL, NoSQL и различия в моделях баз данных / DEVACADEMY

Сегодня довольно сложно представить себе какое-либо приложение, которое не использовало бы базы данных, будь то сервера, персональные компьютеры или мобильные устройства. От простых игр до серьезных бизнес приложений. Все они обрабатывают, читают и записывают определенный набор данных.

Система управления базами данных (DBMS/СУБД) - программное обеспечение, предназначенное для хранения и управления данными. Для решения различных задач разрабатывалось всё больше и больше различных СУБД (Реляционные и NoSQL) и программ для работы с ними (MySQL, PostgreSQL, MongoDB, Redis и т.д.)

Содержание

  1. СУБД
  2. Модели БД
    1. Реляционная модель
    2. Безсхемный подход (NoSQL)
  3. Популярные СУБД
    1. Реляционные СУБД
    2. NoSQL (NewSQL) СУБД
  4. Сравнение SQL и NoSQL БД

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

Термин СУБД включает в себя довольно большое количество сильно отличающихся друг от друга инструментов для работы с базами данных (отдельные программы и подключаемые библиотеки). Так как данные бывают различных видов и типов, начиная со второй половины 20 века было разработано огромное количество разных СУБД и других приложений для работы с БД.

СУБД основываются на модели базы данных - это специальные структуры предназначенные для работы с данными. Все СУБД сильно отличаются в том, каким образом они хранят и обрабатывают свои данные.

Хотя существуют много решений для работы с БД, популярными и востребованными становятся лишь некоторые из них. Наиболее часто применяемая на сегодняшний день - реляционная система управления базами данных.

Модели БД

Каждая система поддерживает различные модели и структуры баз данных. Эта модель и определяет, как создаваемая СУБД будет оперировать данными. Существует довольно немного моделей БД, которые предоставляют способы четкого структурирования данных, самая популярная из таких моделей - реляционная модель.

Реляционная модель и реляционные БД могут быть очень мощным инструментом, но только если программист знает как с ними обращаться. Недавно, стали набирать популярность NoSQL системы с обещанием избавиться от старых проблем БД и добавить новый функционал. Исключая жесткую структуру данных, при этом сохранив реляционный стиль, эти СУБД предлагают более свободный способ работы с ними и гораздо большие возможности для их настройки. Хотя не обходится и без возникновения новых проблем.

Реляционная модель

Представленная в 1970 году реляционная модель предложила математический способ структурирования, хранения и использования данных. По сути он расширил плоскую и сетевую модели, объединив их в реляционную. Основное преимущество которой было объединение данных в группы, именно реляционная модель позволила хранить данные в структурированном табличном виде (ФИО, адрес).

Благодаря десятилетиям разработки, СУБД достигли довольно высокого уровня в производительности и отказоустойчивости. Опытом разработчиков и сетевых администраторов было доказано, что все эти инструменты отлично справляются со своими функциями в приложениях любой сложности, не теряют данных даже при некорректных завершениях работы.

Несмотря на большие ограничения в формировании и управлении данными, реляционные базы данных сохраняют широкие возможности по настройке и предлагают довольно большой функционал.

Неструктурированный подход (NoSQL)

NoSQL убирает все ограничения реляционной модели (недостаточная производительность, трудоёмкое горизонтальное масштабирование, недостаточная производительность в кластере) и облегчает средства хранения и доступа к данным. Такие БД используют неструктурированный подход (создание структуры на лету), тем самым снимая ограничения жестких связей и предлагая различные типы доступа к специфическим данным.

Популярные СУБД

Цель этой статьи - познакомить вас с парадигмами основных систем баз данных. Довольно сложно озвучить определенное решение, но, как правило, приходится выбирать между реляционной моделью и NoSQL. Прежде чем начать искать различия, давайте разберемся во внутренних процессах.

Реляционные СУБД

Реляционные СУБД берут своё название от модели БД с которой работают. На данный момент и, наверное, в ближайшем будущем эти СУБД будут наиболее популярным выбором для хранения данных.

Реляционные СУБД используют строго описанные структуры данных - схемы. Схема базы данных включает в себя описание содержания, структуры и ограничений целостности, т.е. она определяет таблицы, поля в каждой таблице, а также отношения между полями и таблицами.

Вот некоторые из наиболее популярных систем:

  • SQLite - довольно мощная встраиваемая СУБД
  • MySQL - наиболее популярная СУБД
  • PostgreSQL - самая профессиональная свободно распространяемая СУБД, полностью соответствующая стандартам SQL

Заметка: в статье Сравнение реляционных СУБД вы можете найти более подробную информацию о реляционных СУБД.

NoSQL (NewSQL) СУБД

NoSQL базы данных не работают с реляционными моделями. Существует много различных решений, каждое из которых работает немного по-своему и служит специфической цели. Эти безсхемные решения снимают ограничения с формирования сущностей и допускают хранения данных в виде ключ-значение.

В отличии от реляционных баз данных, можно группировать коллекции данных с другими NoSQL базами данных, например MongoDB. Такие СУБД хранят данные как одно целое в базе. Такие данные могут представлять собой одиночный объект как JSON и вместе с тем корректно отвечать на запросы к полям.

NoSQL базы данных не используют общий формат запроса, такой как SQL в реляционных базах данных. Каждое NoSQL решение использует собственную систему запросов.

Заметка: более подробно о NoSQL вы можете прочитать в нашей статье: Сравнение NoSQL СУБД

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

Для представления общей картины давайте сравним эти два типа СУБД:

  • Стуруктуры данных и их типы - реляционные БД используют строгие схемы данных, NoSQL БД допускают любой тип данных
  • Запросы - вне зависимости от типа лицензии, реляционные базы данных в той или иной мере соответствуют стандартам SQL, поэтому данные из них можно получать при помощи языка SQL. NoSQL БД используют специфические способы запросов к данным.
  • Масштабируемость - оба эти типа СУБД довольно легко поддаются вертикальному масштабированию (т.е. увеличение системных ресурсов). Тем не менее, так как NoSQL это более современный продукт, именно такие СУБД предлагают более простые способы горизонтального масштабирования (т.е. создание кластера из нескольких машин).
  • Надежность - когда дело доходит до сохранности данных и гарантии выполнения транзакций SQL БД по прежнему занимают лидирующие позиции.
  • Поддержка - Реляционные СУБД имеют не малую историю за плечами. Они очень популярны и предлагают как платные, так и бесплатные решения. При возникновении проблем, все же гораздо проще найти ответ, если дело касается реляционных систем, чем NoSQL, особенно если решение довольно сложное по своей природе (например MongoDB).
  • Хранение и доступ к сложным структурам данных - изначально реляционные системы предполагали работу со сложными структурами, именно поэтому они превосходят остальные решения по производительности.

devacademy.ru

Что такое база данных MySQL?

В прошлой статье я писал о том, что такое CMS.  Большинство CMS используют для хранения информации базу данных. В этой статье вы узнаете о том, что такое база данных и познакомитесь с базой данных MySQL.

База данных (БД) вещь крайне полезная для ведения своего сайта. Работать со статическим проектом, состоящим из нескольких html страничек легко и без применения баз данных. Однако сайты имеют тенденцию разрастаться. С динамичным проектом такой метод работы уже вряд ли себя оправдает. Хранить массивы различной информации в сотнях файлов, а затем требовать от них определенные строки при работе вэб-сервера – дело хлопотное и медленное. БД позволяют структурировать и систематизировать информацию. Код для использования БД намного легче, чем аналогичный для работы с файлами, да и времени на запрос уходит куда меньше.

База данных (database) – это совокупность связанных между собой таблиц. Например, в одной таблице может храниться информация о пользователе, зарегистрированном на сайте, а в другой – информация о комментариях, которые оставил пользователь на сайте.

Наилучшее решение — хранить информацию типа списков, комментариев и т.д. в БД. Однако база данных далеко не всегда статичное образование, чаще наоборот, она регулярно пополняться и корректируется. Для легкости управления этими БД, изменения и добавления данных существуют системы управления базами данных (СУБД).

Одна из самых популярных СУБД в современных интернет-технологиях, бесспорно, MySQL.

Web-мастера даже придумали альтернативное название MySQL – «мускул». Поэтому, если вы когда-нибудь услышите выражение «движок на мускуле», это означает, что CMS использует базу данных MySQL .

К основным плюсам MySQL можно отнести высокую скорость работы, быстроту обработки данных и оптимальную надежность. Немаловажно и то, что данная СУБД распространяется бесплатно и представляет собой программное обеспечение с открытым кодом. За счет этого Вы можете вносить свои изменения и модифицировать код, что весьма полезно для веб-мастеров.

MySQL – это один из множества ПО для работы с SQL базами данных.

SQL – это структурированный язык запросов, созданный для управления реляционными БД. Он обладает широким перечнем возможностей, например, создать таблицу, редактировать и удалять данные, производить запросы из таблиц и многое другое.

Как же хранятся данные в реляционных базах данных?

Представьте себе самую простую таблицу имен, номеров телефонов, адресов и т.д. Именно так и хранятся данные реляционных БД – в таблице, организуются посредствам столбцов и строк. Каждому столбцу присвоено имя, которое отображается в названии, все значения в этом столбце принадлежат к переменным только одного типа. Столбцы расположены в определенном строгом порядке, в то время как строки неупорядочены. Зачастую данные некоторых ячеек в одной таблице связаны со значением ячеек другой таблицы и так далее. Запросы к БД возвращают результат в виде таблицы.

Данные в БД делятся на уникальные или неуникальные. Неуникальные – это имя, год рождения, время и т.д., в то время, как уникальные – номер кредитки, договора хостинг-услуг. Уникальные значения присутствуют в списках так называемого «уникального индекса»

Большим достоинством MySQL является возможность работы с интерфейсом программного приложения API (Application Program Interface). API может обеспечить простой доступ из программы пользователя к СУБД. Пусть даже эти программы будут написаны на на Perl, C и т.д.

Самой популярной «связкой» для управления сайтами считается MySQL с языком PHP. Многие CMS написаны на PHP в связке с БД MySQL. Одним из самых ярких примеров данного «союза» может служить движок для сайтов и блогов WordPress, завоевавший огромную популярность в мире. Взаимодействие с MySQL в данном случае ведется посредством совокупности функций. Примером такой функции может служить «mysql_connect», которая соединяется с сервером БД и возвращает дескриптор соединения с ней.

Существует множество СУБД поддерживающих SQL язык запросов: MySQL, mSQL, PostgreSQL, MSSQL и многие другие. Каждая из них имеет преимущества в определенной сфере. И все же именно MySQL завоевала широкое признание и популярность в Интернете благодаря своей гибкости и универсальности.

blogwork.ru

Язык реляционных баз данных SQL Лекция 13. Язык SQL. Функции и основные возможности - Базы данных, знаний и хранилища данных. Big data, СУБД и SQL и noSQL

13.1. SEQUEL/SQL СУБД System R

Язык для взаимодействия с БД SQL появился в середине 70-х и был разработан в рамках проекта экспериментальной реляционной СУБД System R. Исходное название языка SEQUEL (Structered English Query Language) только частично отражает суть этого языка. Конечно, язык был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционной БД, но на самом деле уже являлся полным языком БД, содержащим помимо операторов формулирования запросов и манипулирования БД средства определения и манипулирования схемой БД; определения ограничений целостности и триггеров; представлений БД; возможности определения структур физического уровня, поддерживающих эффективное выполнение запросов; авторизации доступа к отношениям и их полям; точек сохранения транзакции и откатов. В языке отсутствовали средства синхронизации доступа к объектам БД со стороны параллельно выполняемых транзакций: с самого начала предполагалось, что необходимую синхронизацию неявно выполняет СУБД.

Рассмотрим эти свойства языка немного более подробно.

13.1.1. Запросы и операторы манипулирования данными

Как известно, двумя фундаментальными языками запросов к реляционным БД являются языки реляционной алгебры и реляционного исчисления. При всей своей строгости и теоретической обоснованности эти языки редко используются в современных реляционных СУБД в качестве средств пользовательского интерфейса. Запросы на этих языках трудно формулировать и понимать. SQL представляет собой некоторую комбинацию реляционного исчисления кортежей и реляционной алгебры, причем до сих пор нет общего согласия, к какому из классических языков он ближе. При этом возможности SQL шире, чем у этих базовых реляционных языков, в частности, в общем случае невозможна трансляция запроса, сформулированного на SQL, в выражение реляционной алгебры, требуется некоторое ее расширение.

Существенными свойствами подъязыка запросов SQL являются возможность простого формулирования запросов с соединениями нескольких отношений и использование вложенных подзапросов в предикатах выборки. Вообще говоря, одновременное наличие обоих средств избыточно, но это дает пользователю при формулировании запроса возможность выбора более понятного ему варианта.

В предикатах со вложенными подзапросами в SQL System R можно употреблять теретико-множественные операторы сравнения, что позволяет формулировать квантифицированные запросы (эти возможности обычно труднее всего понимаются пользователями и поэтому в дальнейшем в SQL появились явно квантифицируемые предикаты).

Существенной особенностью SQL является возможность указания в запросе потребности группирования отношения-результата по указанным полям с поддержкой условий выборки на всю группу целиком. Такие условия выборки могут содержать агрегатные функции, вычисляемые на группе. Эта возможность SQL главным образом отличает этот язык от языков реляционной алгебры и реляционного исчисления, не содержащих аналогичных средств.

Еще одним отличием SQL является необязательное удаление кортежей-дубликатов в окончательном или промежуточных отношениях-результатах. Строго говоря, результатом оператора выборки в языке SQL является не отношение, а мультимножество кортежей. В тех случаях, когда семантика запроса требует наличия отношения, уничтожение дубликатов производится неявно.

Самый общий вид запроса на языке SQL представляет теоретико-множественное алгебраическое выражение, составленное из элементарных запросов. В SQL System R допускались все базовые теретико-множественные операции (UNION, INTERSECT и MINUS).

Работа с неопределенными значениями в SQL System R до конца продумана не была, хотя неявно предполагалось использование трехзначной логики при вычислении логических выражений.

Операторы манипулирования данными UPDATE и DELETE построены на тех же принципах, что и оператор выборки данных SELECT. Набор кортежей указанного отношения, подлежащих модификации или удалению, определяется входящим в соответствующий оператор логическим выражением, которое может включать сложные предикаты, в том числе и с вложенными подзапросами.

В операторе вставки кортежа(ей) в указанное отношение заносимый кортеж может задаваться как в литеральной форме, так и с помощью внутреннего подоператора выборки.

13.1.2. Операторы определения и манипулирования схемой БД

В число операторов определения схемы БД SQL System R входили операторы создания и уничтожения постоянных и временных хранимых отношений (CREATE TABLE и DROP TABLE) и создания и уничтожения представляемых отношений (CREATE VIEW и DROP VIEW). В языке и в реализации System R не запрещалось использовать операторы определения схемы в пределах транзакции, содержащей операторы выборки и манипулирования данными. Допускалось, например, использование операторов выборки и манипулирования данными, в которых указываются отношения, не существующие в БД к моменту компиляции оператора. Конечно, эта возможность существенно усложняла реализацию и требовалась по существу очень редко.

Оператор манипулирования схемой БД ALTER TABLE позволял добавлять указываемые поля к существующим отношениям. В описании языка определялось, что выполнение этого оператора не должно приводить к недействительности ранее откомпилированных операторов над отношением, схема которого изменяется, и что значения вновь определенных полей в существующих кортежах отношения становятся неопределенными.

13.1.3. Определения ограничений целостности и триггеров

Язык SQL System R включал очень мощные средства контроля и поддержания целостности БД. Средства контроля базировались на аппарате ограничений целостности (ASSERTIONS). Фактически, ограничение целостности - это логическое выражение, вычисляемое над текущим состоянием БД, ложность которого соответствует нецелостному состоянию БД. Логическое выражение ограничения целостности могло содержать любой допустимый в языке предикат.

Более точно, ограничения целостности делились на два класса: проверяемые после выполнения оператора манипулирования данными и проверяемые при завершении транзакции или при выполнении специального оператора INFORCE INTEGRITY. Типы предикатов, которые можно использовать в операторах определения ограничений целостности разных классов, различаются. В операторах первого класса проверяется, фактически, текущий кортеж, с которым производится манипулирование. Во втором случае проверяются указанные в ограничении целостности отношения, т.е. все их кортежи. Различается и определяемая в языке реакция системы на нарушения ограничений целостности разных классов. В первом случае нарушение ограничения целостности приводит к откату транзакции в точку, непосредственно предшествующую операции манипулирования данными, выполнение которого вызвало нарушение ограничения целостности. Во втором случае ограничение приводит к полному откату транзакции к ее началу.

Очень важным механизмом, определенным в языке SQL System R, является механизм триггеров. В контексте System R этот механизм рассматривался главным образом как средство автоматического поддержания целостности БД. При определении триггера указывалось условие проверки его применимости (имя отношения и тип операции манипулирования данными), условие применимости триггера (логическое выражение, построенное по правилам, близким к правилам для ограничений целостности первого класса) и действие, которое должно быть выполнено над БД в случае истинности условия применимости. Такое действие могло быть выражено с помощью произвольного оператора манипулирования данными. Во время выполнения действия могли срабатывать другие триггеры и т.д.

Механизмы ограничений целостности и триггеров System R являлись очень мощными и общими, но реализация их очень трудна и накладна (как уже отмечалось, триггеры так и не были реализованы в System R). Дополнительную сложность в реализации создавал тот факт, что допускалось (по крайней мере не запрещалось языком) определение ограничений целостности и триггеров в пределах той же транзакции, в которой выполняются операторы манипулирования данными. При наиболее полной реализации требовалось бы большое число дополнительных действий во время выполнения транзакции. Кроме того, в ряде случаев отсутствие зафиксированной семантики соответствующих конструкций языка приводило к неоднозначному пониманию выполнения транзакций.

13.1.4. Представления базы данных

В языке допускалось использование хранимых отношений БД и представляемых отношений. Наиболее удачным решением было использование для определения представлений общего аппарата операторов выборки. Любой оператор выборки может быть использован для определения представления.

В языке отсутствуют какие-либо ограничения по поводу использования представлений: в любом операторе SQL, в котором допускается использование имени хранимого отношения, допускается и использование имени представления. В SQL System R ничего не говорится о рекомендуемом способе реализации доступа к представлениям, но при любом способе эффект должен быть таким, как если бы выполнить полную материализацию представления до выполнения оператора.

Массу проблем, исследований и предложений породила потенциальная возможность выполнения операторов манипулирования данными над представлениями. Понятно, что эта возможность легко реализуема для простых представлений, но в более сложных случаях не только реализация, но и семантика операций становится нетривиальной. Кстати, в System R операторы манипулирования данными допускались только над простыми представлениями.

13.1.5. Определение управляющих структур

Внесение в реляционный язык, каким является SQL, явных операторов порождения и уничтожения структур физического уровня, поддерживающих эффективное выполнение запросов к БД, явилось в SQL System R чисто прагматическим решением, обеспечивающим возможность всех видов работ с БД с помощью одного языка.

В SQL System R упоминаются два вида таких структур: индексы и связи (links). Индекс в его абстрактном языковом представлении - это инвертированный файл, обеспечивающий доступ к кортежам соответствующего отношения на основе заданных значений одного или нескольких столбцов, составляющих ключ индекса. Операторы языка позволяли создавать и уничтожать индексы, но никаким образом не давали возможности явно указать на необходимость использования существующего индекса при выполнении оператора выборки, решение об этом возлагалось на реализацию.

С помощью оператора определения индекса можно было выразить два дополнительных утверждения, касающихся логической схемы отношения и физической структуры его хранения. Использование при определении индекса ключевого слова UNIQUE означало, что ключ этого индекса является возможным ключом соответствующего отношения. Фактически это означает наличие дополнительного механизма определения ограничения целостности отношения. Один из индексов для данного отношения мог быть определен с ключевым словом CLUSTERING. Это означает требование физической кластеризации во внешней памяти кортежей отношения с равными или близкими значениями ключа индекса.

Операторы определения связи позволяли в стиле сетевой модели данных организовать во внешней памяти списки кортежей указанного отношения. Как и в случае индексов, операторы позволяли создавать и уничтожать такие списки, но не давали возможности явно указать на необходимость использования существующих списков при выполнении операторов выборки. Большая трудоемкость поддержания списков при выполнении операторов манипулирования данными и трудность выполнения оценок стоимости их использования при выполнении операторов выборки привели к тому, что механизм связей исчез из языка уже на поздней стадии проекта System R. С тех пор этот механизм, насколько нам известно, не появлялся ни в одном варианте SQL.

13.1.6. Авторизация доступа к отношениям и их полям

Существенной особенностью языка SQL, появившейся в нем с самого начала, является обеспечение защиты доступа к данным средствами самого языка. Основная идея такого подхода состоит в том, что по отношению к любому отношению БД и любому столбцу отношения вводится предопределенный набор привилегий. С каждой транзакцией неявно связывается идентификатор пользователя, от имени которого она выполняется (способы связи и идентификации пользователей не фиксируются в языке и определяются в реализации).

После создания нового отношения все привилегии, связанные с этим отношением и всеми его столбцами, принадлежат только пользователю-создателю отношения. В число привилегий входит привилегия передачи всех или части привилегий другому пользователю, включая привилегию на передачу привилегий. Технически передача привилегий осуществляется при выполнении оператора SQL GRANT. Существует также привилегия изъятия всех или части привилегий у пользователя, которому они ранее были переданы. Эта привилегия также может передаваться. Технически изъятие привилегий происходит при выполнении оператора SQL REVOKE.

Проверка полномочности доступа к данным происходит на основе информации о полномочиях, существующих во время компиляции соответствующего оператора SQL. Подобно тому, что мы отмечали в связи с ограничениями целостности и триггерами, в SQL System R отсутствовали какие-либо ограничения по поводу использования операторов GRANT и REVOKE. Это приводило к существенным техническим затруднениям в реализации, а иногда к неоднозначному пониманию поведения.

Долгое время подход к защите данных от несанкционированного доступа принимался практически без критики, однако в связи с распространяющимся использованием реляционных СУБД в нетрадиционных приложениях все чаще раздается критика. Если, например, в системе БД должна поддерживаться многоуровневая защита данных, соответствующую систему полномочий весьма трудно, а иногда и невозможно построить на основе средств SQL.

13.1.7. Точки сохранения и откаты транзакции

В SQL System R существовали два специальных оператора для установки так называемых точек сохранения транзакции и для отката транзакции к ранее установленной точке сохранения. В литературе, относящейся к System R, обсуждение этих возможностей практически не содержится, из чего неявно следует, что они не были реализованы.

Прямолинейная реализация этого механизма не вызывает особых технических затруднений, но и не очень полезна, потому что после выполнения частичного отката транзакции для успешного продолжения работы прикладной программы потребовалось бы и восстановить ее состояние в соответствующей точке, а это никак не поддерживается. Понятно, что при более тщательной проработке должны быть увязаны механизмы точек сохранения и контроля целостности. Например, было бы естественно, чтобы при выполнении оператора ENFORCE INTEGRITY, если какие-либо ограничения целостности нарушаются, происходил автоматический откат транзакции к ближайшей точки сохранения, в которой нарушения целостности БД не было. Это значительно усложнило бы реализацию, но было бы очень полезно. Аналогично, можно было бы использовать механизм точек сохранения при автоматических откатах транзакций по причине возникновения синхронизационных тупиков.

Отметим еще два важных свойства языка SQL System R, которые в разных видах присутствуют во всех развитых последующих вариантах языка.

13.1.8. Встроенный SQL

В SQL System R присутствуют специальные операторы, поддерживающие встраивание операторов SQL в традиционные языки программирования (в System R основным таким языком был PL/1).

Основная проблема встраивания SQL в язык программирования состояла в том, что SQL - реляционный язык, т.е. его операторы большей частью работают со множествами, в то время как в языках программирования основными являются скалярные операции. Решение SQL состоит в том, что в язык дополнительно включаются операторы, обеспечивающие покортежный доступ к результату запроса к БД.

Для этого в язык вводится понятие курсора, с которым связывается оператор выборки. Над определенным курсором можно выполнять оператор OPEN, означающий материализацию отношения-результата запроса, оператор FETCH, позволяющий выбрать очередной кортеж результирующего отношения в память программы, и оператор CLOSE, означающий конец работы с данным курсором.

Дополнительную гибкость при создании прикладных программ со встроенным SQL обеспечивает возможность параметризации операторов SQL значениями переменных включающей программы.

13.1.9. Динамический SQL

Для упрощения создания интерактивных SQL-ориентированных систем в SQL System R были включены операторы, позволяющие во время выполнения транзакции откомпилировать и выполнить любой оператор SQL.

Оператор PREPARE вызывает динамическую компиляцию оператора SQL, текст которого содержится в указанной переменной символьной строке включающей программы. Текст может быть помещен в переменную при выполнении программы любым допустимым способом, например, введен с терминала.

Оператор DESCRIBE служит для получения информации об указанном операторе SQL, ранее подготовленном с помощью оператора PREPARE. C помощью этого оператора можно узнать, во-первых, является ли подготовленный оператор оператором выборки, и во-вторых, если это оператор выборки, получить полную информацию о числе и типах столбцов результирующего отношения.

Для выполнения ранее подготовленного оператора SQL, не являющегося оператором выборки, служит оператор EXECUTE. Для выполнения динамически подготовленного оператора выборки используется аппарат курсоров с некоторыми отличиями по части задания адресов переменных включающей программы, в которые должны быть помещены значения столбцов текущего кортежа результата.

Подводя итог приведенному краткому описанию основных черт SQL System R, отметим, что несмотря на недостаточную техническую проработку, в идейном отношении язык содержал все необходимые средства, позволяющие использовать его как базовый язык СУБД.

intellect.ml

SQL - СУБД Базы данных

Есть много популярных СУБД, доступных для работы. В этом руководстве дается краткий обзор нескольких наиболее популярных СУБД. Это поможет вам сравнить их основные черты.

MySQL

MySQL является базой данных SQL с открытым исходным кодом, разработанный шведской компанией MySQL AB. MySQL произносится как “my ess-que-ell,”, в отличие от SQL, произносится как “sequel”.

MySQL поддерживает множество различных платформ, включая Microsoft Windows, основных дистрибутивов Linux, UNIX и Mac OS X.

MySQL имеет платные и бесплатные версии, в зависимости от его использования (некоммерческих / коммерческих) и функций. MySQL поставляется с очень быстрым, многопоточным, многопользовательским и надежным сервером баз данных SQL.

История:

  • Разработка MySQL Майкл Widenius & David Axmark начиная с 1994 года.
  • Первый внутренний релиз 23 мая 1995 года.
  • Версия для Windows была выпущена 8 января 1998 года для Windows 95 и NT.
  • Версия 3.23: бета с июня 2000 года, релиз производства января 2001.
  • Версия 4.0: бета с августа 2002 года, релиз производства марта 2003 года (союзы).
  • Версия 4.01: бета с августа 2003 года Джиоти принимает MySQL для отслеживания базы данных.
  • Версия 4.1: бета с июня 2004 года, релиз производства октября 2004.
  • Версия 5.0: бета с марта 2005 года, релиз производства октября 2005.
  • Sun Microsystems приобрела MySQL AB 26 февраля 2008 года.
  • Версия 5.1: релиз производства 27 ноября 2008.

Особенности:

  • Высокая производительность.
  • Высокая доступность.
  • Масштабируемость и гибкость запуска
  • Надежная поддержка транзакций.
  • Web хранилища данных. Сильные стороны
  • Сильная защита данных.
  • Комплексное развитие приложений.
  • Удобное управление.
  • Open Source Freedom и 24 х 7 поддержка.
  • Самая низкая совокупная стоимость владения.

MS SQL Server

MS SQL Server является реляционной системы управления базами данных, разработанная Microsoft Inc. Ее основные языки запросов:

История:

  • 1987 – Sybase выпускает SQL Server для UNIX.
  • 1988 – Microsoft, Sybase и Aston-Tate порт SQL Server для OS / 2.
  • 1989 – Microsoft, Sybase и Aston-Tate выпуск SQL Server 1.0 для OS / 2.
  • 1990 – SQL Server 1.1 выпущен с поддержкой клиентов Windows 3.0.
  • Aston – Тейт выпадает из разработки SQL Server.
  • 2000 – Microsoft выпускает SQL Server 2000.
  • 2001 – Microsoft выпускает XML для SQL Release 1 веб-сервера (скачать).
  • 2002 – Microsoft выпускает SQLXML 2.0 (переименован из XML для SQL Server).
  • 2002 – Microsoft выпускает SQLXML 3.0.
  • 2005 – Microsoft выпускает SQL Server 2005 по 7 ноября 2005 года.

Особенности:

  • Высокая производительность.
  • Высокая доступность.
  • Зеркальное отображение базы данных.
  • Моментальные снимки баз данных.
  • Интеграция CLR.
  • Service Broker.
  • DDL триггеры.
  • Функции ранжирования.
  • Row-версия на основе уровней изоляции.
  • XML-интеграция.
  • TRY…CATCH.
  • Компонент Database Mail.

ORACLE

Это очень большая и управляемая база данных несколькими пользователями системы. Oracle является реляционной системой управления базами данных, разработанная корпорацией “Oracle”.

Oracle позволяет эффективно управлять своими ресурсами, информационными базами данных, среди многочисленных клиентов, запрашивающих и отправки данных в сети.

Это отличный выбор для сервера баз данных клиент / серверных вычислений. Oracle поддерживает все основные операционные системы для клиентов и серверов, в том числе MSDOS, NetWare, UnixWare, OS / 2 и большинстве разновидностей UNIX.

История:

Oracle появилась в 1977 году.

  • 1977 – Ларри Эллисон, Боб Майнер и Эд Оутс основал лаборатории разработки программного обеспечения для проведения опытно-конструкторских работ.
  • 1979 – Версия 2.0 была выпущена Oracle и он стал первым коммерческим реляционная база данных, и в первую базу данных SQL. Компания изменила свое название на Relational Software Inc. (RSI).
  • 1981 – RSI начал разрабатывать инструменты для Oracle.
  • 1982 – RSI был переименован в корпорации Oracle.
  • 1983 – Oracle выпустила версию 3.0, переписан на языке C и побежал на нескольких платформах.
  • 1984 – Oracle версия 4.0 была выпущена. В нем содержатся такие функции, как управление параллелизмом – многоверсионную согласованность чтения и т.д.
  • 1985 – Oracle версия 4.0 была выпущена. В нем содержатся такие функции, как управление параллелизмом – многоверсионную согласованность чтения и т.д.
  • 2007 – Oracle выпустила Oracle11g. Новая версия ориентирована на лучшее разбиение на разделы, легко миграции и т.д.

Особенности:

  • Совпадение
  • Согласованность чтения
  • Механизмы блокировки
  • Замораживание базы данных
  • Портативность
  • Самоуправляемая база данных
  • SQL * Plus
  • ASM
  • Планировщик
  • Диспетчер ресурсов
  • Хранилище данных
  • Материализованные представления
  • Битовые индексы
  • Сжатие таблиц
  • Параллельное выполнение
  • Аналитическая SQL
  • Сбор данных
  • Разметка

MS ACCESS

Это один из самых популярных продуктов Microsoft. Microsoft Access представляет собой программное обеспечение для управления базами данных начального уровня. База данных MS Access не только недорогая, но и мощная база данных для небольших проектов.

MS Access использует движок базы данных Jet, который использует конкретный язык SQL диалекта (иногда называют Jet SQL).

MS Access поставляется с профессиональным изданием пакета MS Office. MS Access имеет простой в использовании интуитивно понятный графический интерфейс.

  • 1992 – Access была выпущена версия 1.0.
  • 1993 – Access 1.1 выпущен для улучшения совместимости с включением языка программирования Basic Access.
  • Наиболее значительный переход был из Access 97 в Access 2000
  • 2007 – Access 2007, новый формат базы данных был введен ACCDB, который поддерживает сложные типы данных, такие как многозначного и монтажными полей.

Особенности:

  • Пользователи могут создавать таблицы, запросы, формы и отчеты, и соединить их вместе с макросами.
  • Импорт и экспорт данных в различных форматах, включая Excel, Outlook, ASCII, Dbase, Paradox, FoxPro, SQL Server, Oracle, ODBC и т.д.
  • Существует также формат базы данных Jet (MDB или ACCDB в Access 2007), который может содержать приложения и данные в одном файле. Это делает его очень удобным для распространения всего приложения другому пользователю, который может запустить его в отключенных средах.
  • Microsoft Access предлагает параметризованные запросы. Эти запросы и таблицы доступа можно ссылаться из других программ, таких как VB6 и .NET через DAO или ADO.
  • На рабочем столе выпуски Microsoft SQL Server можно использовать с доступом в качестве альтернативы к базе данных Jet Engine.
  • Microsoft Access является файлом базы данных на основе сервера. В отличие от клиент-серверных реляционных систем управления базами данных (СУБД), Microsoft Access не реализует триггеров базы данных, хранимых процедур или ведение журнала транзакций.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

andreyex.ru

Персональный сайт - База данных в SQL Server

Работа с данными в SQL Server

1.База данных в SQL Server

Сведения обо всех базах данных, относящихся к текущему экземпляру сервера базы данных, хранятся в системной базе данных master. Вы всегда при наличии соответствующих полномочий сможете просмотреть всю обширную информацию, касающуюся любой базы данных текущего экземпляра сервера, а также данные относительно всех файлов, входящих в состав каждой базы данных.

В SQL Server существует два вида баз данных — системные базы данных и пользовательские базы данных.

Системные базы данных создаются автоматически при инсталляции SQL Server и изменяются, как правило, системой. Хотя некоторые изменения в отдельных системных базах данных может выполнить и пользователь, но это следует делать только в том случае, если пользователь точно понимает, что он делает и к каким результатам это может привести. Профессиональные программисты SQL Server часто после инсталляции системы вносят нужные им изменения в базу данных model, которая используется при создании пользовательских баз данных.

Пользовательские базы данных создаются, изменяются и удаляются пользователем. В такие пользовательские базы данных вы помещаете все те данные, которые необходимы вам (вашему заказчику) для решения задач конкретной предметной области. Сюда же можно помещать и другие нужные для работы объекты базы данных — хранимые процедуры, пользовательские типы данных, триггеры, функции и др.

Любая база данных в SQL Server состоит, как минимум, из двух файлов — файла (или нескольких файлов) данных и файла (нескольких файлов) журнала транзакций. Файлы данных (это относится только к файлам данных, но не к файлам журнала транзакций) могут объединяться в файловые группы. Каждому файлу базы данных, будь это файл данных или файл журнала транзакций, присваивается как имя, под которым файл известен в операционной системе, так и логическое имя, по которому к этому файлу можно обращаться в среде SQL Server.

Пользовательская база данных также имеет ряд характеристик, которые можно просматривать и при необходимости изменять с использованием различных средств, существующих в системе.

К базе данных можно обратиться по ее логическому имени, задаваемому явно при создании базы данных. При обращении к некоторым функциям используется идентификатор базы данных — целочисленное значение, присваиваемое системой в момент создания базы данных.

2. Системные базы данных

Системные базы данных содержат сведения, необходимые для работы SQL Server.

Системными базами данных являются: master; model; msdb; tempdb.

База данных master является наиболее важной системной базой данных в SQL Server. Она содержит все данные, необходимые для работы с СУБД. Она также содержит данные о конфигурации сервера базы данных, сведения обо всех пользовательских базах данных, созданных в экземпляре сервера: характеристики баз данных, характеристики и размещение файлов каждой базы данных. Настоятельно рекомендуется выполнять ее резервное копирование при создании, изменении или удалении любой базы данных пользователя. SQL Server не сможет выполняться, если база данных master недоступна. База данных состоит из двух файлов: из файла данных (логическое имя master, имя файла базы данных master.mdf) и файла журнала транзакций (логическое имя mastlog, имя файла mastlog.ldf).

База данных model

Основным назначением базы данных model является хранение шаблонов для всех вновь создаваемых пользователем баз данных. При создании новой пользовательской базы данных в нее из базы данных model копируются типы данных. Создаваемым базам данных присваиваются значения по умолчанию многочисленных характеристик, которые также выбираются из базы данных model. Если вы добавите новые объекты в базу данных model, то эти объекты будут копироваться во все вновь создаваемые пользовательские базы данных текущего экземпляра сервера. База данных состоит из двух файлов: файла данных (логическое имя modeldev, имя файла model.mdf) и журнала транзакций (логическое имя modellog, имя файла modellog.ldf).

База данных msdb

В SQL Server существуют средства создания расписаний (schedule) для автоматического выполнения заданий, ведения истории их выполнения и для выдачи предупреждающих сообщений (alert). Все это хранится в базе данных msdb. Используется в основном компонентом SQL Server Agent. В этой базе данных также хранится история создания резервных копий, SSIS-пакеты, сведения о репликациях. Используется компонентами Service Broker и database mail. Эта база данных состоит из двух файлов: файла данных (логическое имя MSDBData, имя файла MSDBData.mdf) и журнала транзакций (логическое имя MSDBLog, имя файла MSDBLog.ldf).

База данных tempdb

В системной базе данных tempdb хранятся временные объекты, создаваемые пользователями (в первую очередь это временные таблицы, которые существуют только на время выполнения соответствующей программы пользователя, где они были созданы), это внутренние объекты, создаваемые сервером базы данных при выполнении запросов, а также ряд других объектов. Во многих случаях использование базы данных tempdb позволяет повысить производительность системы при выполнении различных операций с базами данных. База данных так же, как и все остальные системные базы данных, использует два файла: файл данных (логическое имя tempdev, имя файла tempdb.mdf) и журнал транзакций (логическое имя templog, имя файла templog.ldf).

База данных resource

В SQL Server существует и такой невидимый обычными средствами объект, как скрытая база данных resource. Эта база данных в схеме sys содержит системные объекты SQL Server (системные хранимые процедуры, представления, функции), которые доступны из любой пользовательской и системной базы данных. Использование ресурсной БД облегчает внесение изменений при установке пакетов исправлений и иных обновлений за счет простой замены на новую версию базы данных. Эта база данных хранится отдельно от всех других системных баз данных. Несмотря на то, что она сильно засекречена, сообщу вам имена ее файлов: файл данных имеет физическое имя mssqlsystemresource.mdf, файл журнала транзакций — физическое имя mssqlsystemresource.ldf.

 

Не следует пытаться вручную вносить изменения в системные базы данных. Разве что нужно будет выполнять их резервное копирование после соответствующих изменений и при необходимости, в случаях сбоев системы, осуществлять восстановление скопированных баз данных.

3. Базы данных пользователей

В созданной пользователем базе данных хранится множество объектов. Главным объектом являются, разумеется, таблицы, в которые вы помещаете все данные, необходимые для решения задач конкретной предметной области. База данных содержит как сами данные, хранящиеся в таблицах, таки метаданные, описывающие эти данные. Хранение в базе данных и метаданных является важнейшим принципом, применяемым во всех базах данных. Это позволяет уменьшить зависимость программ от структуры базы данных.

Помимо пользовательских объектов в базе данных хранятся системные объекты — системные таблицы, системные представления (их очень большое количество), системные хранимые процедуры (их еще больше), системные функции , системные типы данных, а также пользователи, роли, схемы.

База данных может содержать не более 32 767 файлов для хранения данных. Первый или единственный файл данных называется первичным файлом. И при вновь созданной, так сказать "пустой", базе данных в первичном файле хранятся системные данные, такие как ссылки на другие, вторичные файлы данных и на файлы журнала транзакций. Начальный размер первичного файла не может быть меньше, чем 3 Мбайта.

При желании вы можете использовать вторичные файлы для хранения данных. Во вторичных файлах хранятся только пользовательские данные. Файлы данных могут объединяться в файловые группы. В любой базе данных всегда присутствует первичная файловая группа PRIMARY. Если не создано никакой вторичной файловой группы, то все файлы данных принадлежат первичной группе. В некоторых случаях имеет смысл объединять отдельные файлы в файловые группы с целью повышения производительности системы. В файловые группы могут объединяться только файлы данных, но не файлы журнала транзакций.

Журнал транзакций также может быть представлен несколькими файлами. В журнале хранятся все изменения базы данных, выполненные в контексте каждой транзакции. Прежде чем записать выполненные пользователем изменения в файл данных, система вначале осуществляет необходимые записи в журнал транзакций.

Журнал используется для выполнения операций подтверждения (COMMIT) или отката (ROLLBACK) транзакций, а также для целей восстановления базы данных на любой заданный момент времени или в случае ее разрушения.

4. Характеристики базы данных

1. Владелец базы данных (Owner) имеет все полномочия к базе данных. Он может изменять характеристики базы, удалять ее, вносить любые изменения в данные и метаданные. Владельцем базы становится пользователь, создавший базу данных.

Владельца пользовательской базы данных можно изменить, используя в языке Transact-SQL системную процедуру sp_changedbowner. Вот несколько упрощенный синтаксис обращения к этой процедуре:

EXECUTE sp_changedbowner '<имя нового владельца>'

Функция возвращает значение 0 при успешной смене владельца или 1 в случае возникновения ошибки. Имя нового владельца уже должно быть описано в системе.

Чтобы получить список существующих в системе пользователей, можно выполнить системную хранимую процедуру sp_helplogins:

EXEC sp_helplogins;

2. Порядок сортировки (collation) для базы данных определяет допустимый набор символов в строковых типах данных CHAR, VARCHAR и правила, по которым будут при необходимости упорядочиваться эти строковые данные. Порядок сортировки определяет, будет ли сортировка происходить по внутреннему коду или в лексикографическом (алфавитном) порядке, в каком порядке будут размещаться строчные и прописные буквы, как распределяются знаки препинания, иные специальные символы и др. Если для строкового типа данных явно не указан порядок сортировки, то ему будет присвоен порядок, заданный по умолчанию для всей базы данных. Для элемента данных при его описании в базе можно указать любой допустимый порядок сортировки, отличный от порядка сортировки базы данных.

3. Возможность изменения данных базы данных

База данных может находиться в состоянии только для чтения (READ_ONLY) или доступна как для чтения, так и для внесения изменений в данные (READ_WRITE).

4. Состояние базы данных (Database State)

В каждый момент времени любая база находится в одном конкретном состоянии (state). В SQL Server существуют следующие состояния базы данных:

  • ONLINE. База данных в доступном состоянии. С ней можно выполнять любые действия по изменению данных и метаданных. В этом состоянии средствами операционной системы невозможно удалить или даже скопировать файлы базы данных на другие устройства (при запущенном на выполнение сервере базы данных).
  • OFFLINE. База данных в недоступном состоянии (автономном режиме). Никакие действия с объектами базы данных в этом состоянии невозможны. Однако средствами операционной системы можно удалить файлы базы данных, чего делать все-таки не стоит, или скопировать их на другой носитель.
  • RESTORING. База данных недоступна. В это состояние она переводится, когда выполняется восстановление файлов данных из резервной копии.
  • RECOVERING. База данных недоступна, она находится в процессе восстановления. После завершения восстановления база автоматически будет переведена в оперативное состояние (ONLINE).
  • RECOVERY_PENDING. Это состояние ожидания исправления ошибок восстановления базы данных. База данных недоступна. В процессе восстановления базы произошла ошибка, которая требует вмешательства пользователя. После исправления ошибки пользователь сам должен перевести базу в оперативное состояние.
  • SUSPECT. База данных недоступна. Она помечена как подозрительная и может быть поврежденной. Со стороны пользователя требуются действия по устранению ошибок.
  • EMERGENCY. База данных повреждена и находится в состоянии только для чтения (READ_ONLY). Такое состояние базы используется для ее диагностики и при попытках скопировать неповрежденные данные.
  • DEFUNCT. Файл был удален (разумеется, когда он не был в состоянии ONLINE).

Если при работе с базой данных отдельные файлы являются недоступными, то все же возможны различные операции с базой данных, если для выполнения этих операций требуются только данные, содержащиеся в файлах, которые находятся в оперативном режиме. Это одно из неоспоримых преимуществ системы MS SQL Server.

zhulabova.ucoz.ru

Системные базы данных в MS SQL Server 2012 / 2008

В рамках данной статьи рассмотрим системные базы данных MS SQL Server 2012. Ниже приводится их подробное описание, расположение, а также разбираются вопросы о необходимости резервного копирования системных баз данных.

 

 

 

0. Оглавление

  1. Краткое описание системных баз данных
  2. Подробное описание системных баз данных
  3. Просмотр и редактирование свойств системных баз данных

1. Краткое описание системных баз данных

В процессе установки компоненты Database Engine MS SQL Server генерируются следующие системные базы данных:

Системная база данных Описание
master В этой базе данных хранятся все данные системного уровня для экземпляра SQL Server.
tempdb Рабочее пространство для временных объектов или взаимодействия результирующих наборов.
 msdb Используется агентом SQL Server для планирования предупреждений и задач.
model Используется в качестве шаблона для всех баз данных, создаваемых в экземпляре SQL Server. Изменение размера, параметров сортировки, модели восстановления и других параметров базы данных model приводит к изменению соответствующих параметров всех баз данных, создаваемых после изменения.
resource Системные объекты физически хранятся в базе данных resource, но логически отображаются в схеме sys любой базы данных.

2. Подробное описание системных баз данных

Рассмотрим каждую из системных баз данных более подробно:

  • База данных master — наиболее важная системная база данных Databse Engine. Она содержит в себе всю системную информацию, в том числе общие для всего экземпляра метаданные, такие как сведения об учетных записях входа, конечных точках и связанных серверах, а также параметры конфигурации системы. Кроме того, база данных master содержит информацию обо всех других базах данных. Здесь же SQL Server хранит сведения об инициализации. Таким образом, если база данных master станет недоступна, запустить SQL Server будет невозможно.

Резервное копирование: По причине важности этой системной базы данных необходимо всякий раз осуществлять ее резервное копирование, после выполнения любых системных операций, таких как добавление новых баз данных, добавления пользователей в SQL Server, изменений параметров экземпляра SQL Server и т. д.

  • База данных tempdb — служит рабочим пространством для временных объектов или взаимодействия результирующих наборов. Она доступна всех пользователям подключенных к данному экземпляру SQL Server и используется всеми базами данных, принадлежащих экземпляру SQL Server. База данных tempdb пересоздается при каждом запуске SQL Server. Поэтому в базе данных tempdb ничего не сохраняется от одного сеанса SQL Server до следующего. В данной базе данных содержатся следующие объекты:
    • временные объекты, созданные явно, такие как глобальные или локальные временные таблицы, временные хранимые процедуры, табличные переменные и курсоры;
    • внутренние объекты, создаваемые компонентой Database Engine, например рабочие таблицы, хранящие промежуточные результаты буферов или сортировки, промежуточные результаты вычислений сложных выражений;
    • изменения данных в базе данных, в которой используются транзакции изоляции моментальных снимков с зафиксированным чтением и транзакции изоляции моментальных снимков;
    • изменения данных для таких функциональных возможностей, как операции с индексами в сети, множественные активные результирующие наборы (режим MARS) и триггеры AFTER.

Резервное копирование: Операции резервного копирования и восстановления базы данных tempdb запрещены.

Замечание: База данных tempdb используется системой довольно активно. По этой причине необходимо убедиться, что объем памяти для этой базы данных достаточно большой. Также можно получить значительный прирост производительности SQL Server путем выноса базы tempdb на отдельный дисковый накопитель, или более быстрый SSD-диск.

  • База данных model — используется в качестве шаблона для всех баз данных, которые будут создаваться в данном экземпляре SQL Server. Поскольку база данных tempdb создается каждый раз при запуске SQL Server, база данных model всегда должна существовать в системе SQL Server. Все содержимое базы данных model, включая параметры базы данных, копируется в создаваемую базу данных. Соответственно, возможно изменять данную базу данных, добавляя в нее объекты или полномочия. После этого все новые базы данных будут наследовать и эти новые свойства.

Резервное копирование: Следует делать резервную копию базы данных model, после каждого изменения этой базы данных.

  • База данных msdb — используется агентом SQL Server для создания расписания предупреждений и заданий, а также другими компонентами, такими как среда «Среда SQL Server Management Studio», компонента «Service Broker«» и «Database Mail» и др. Например, SQL Server хранит полный журнал резервного копирования и восстановления в базе данных msdb. В эти сведения включено имя стороны, выполнившей резервное копирование, время резервного копирования и устройства или файлы, в которых храниться резервная копия. Среда «SQL Server Management Studio» использует эти сведения для создания плана восстановления базы данных и применения существующих резервных копий журнала транзакций. События резервного копирования для всех баз данных записываются, даже если они создаются средствами пользовательских приложений или сторонних разработчиков.

Резервное копирование: Следует делать резервную копию базы данных msdb, после каждого изменения параметров агента SQL Server.

  • База данных resource — это доступная только для чтения база данных, которая содержит все системные объекты, включенные в SQL Server. Такие системные объекты SQL Server, как sys.objects, физически хранятся в базе данных resource, но логически присутствуют в схеме sys каждой базы данных. База данных resource не содержит пользовательских данных или метаданных. Содержимое этой базы данных обычно используется для системных обновлений.

Резервное копирование: Резервное копирование базы данных resource не предусмотрено.

3. Просмотр и редактирование свойств системных баз данных

Для того, чтобы просмотреть или изменить свойства системных баз данных, а также узнать расположение файлов баз данных необходимо подключиться к данному экземпляру SQL Server с помощью утилиты «SQL Server Management Studio». В окне программы, раскрыв в дереве обозревателя объектов (Object Explorer) вкладки  «Базы данных» (Databases) — «Системные базы данных» (System databases) можно найти все системные базы данных данных за исключением базы resource, которая скрыта от пользователя. Для того чтобы просмотреть параметры конкретной базы данных, необходимо кликнуть по ней правой кнопкой мыши и в контекстном меню выбрать «Свойства» (Properties).

В открывшемся окне можно просмотреть или изменить различные свойства базы данных, располагающиеся на соответствующих вкладках. Например, на вкладке «Файлы» (Files) можно узнать владельца базы данных или путь расположения файлов базы.

О том как изменить каталог расположения файлов системной базы данных tempdb я писал здесь.

Файлы базы данных resource имеют имена mssqlsystemresource.mdf и mssqlsystemresource.ldf и располагаются в каталоге с установленным экземпляром SQL Server. По умолчанию этоC:\Program Files\Microsoft SQL Server\MSSQL11.<instance_name>\MSSQL\Binn\.

Смотрите также:

  • Добавление базы данных в Microsoft SQL Server 2012

    Ниже приведена пошаговая инструкция, показывающая как добавить новую базу данных в Microsoft SQLServer 2012 (в более старых редакциях, например в Microsoft SQL Server 2008 R2, набор действий аналогичен).         Запускаем…

  • Перемещение базы данных tempdb в MS SQL Server 2012

    Системная база данных tempdb служит рабочим пространством для хранения временных объектов, таких как временные таблицы, промежуточные результаты вычислений, временные хранимые процедуры, результаты буферов и сортировки, внутренние объекты, создаваемые компонентой Database…

tavalik.ru