Софт-Портал

серверы баз данных

Рейтинг: 4.6/5.0 (604 проголосовавших)

Категория: Windows

Описание

Какой купить сервер баз данных SQL Server?

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

Тел. +7 (495) 666-56-73 (многоканальный)
ICQ: 639-649-179, 291-109-932

Многоканальный телефон: (495) 666-56-73
E-mail: sales@servergid.ru
ICQ: 639-649-179 Skype: gennady_seleznev
Юридический и фактический адрес: 105082, Москва, ул. Большая Почтовая, дом № 36, строение 5

Доставка по Москве в пределах МКАД: 500 руб. при сумме заказа от 50 000 руб. - доставка бесплатная;
Доставка за пределы МКАД: 500 руб.+40 руб./км;
Доставка в любой регион России осуществляется транспортными компаниями (ТК): "Авторейдинг", "ПЭК", "Деловые Линии". "ЖелдорАльянс", "Желдорэкспедиция" или любой другой по согласованию с клиентом;
Возможен самовывоз .

Серверы баз данных SQL Server

На сегодняшний день сервер баз данных SQL зачастую является ключевым звеном ИТ-инфраструктуры предприятия. Так как главными задачами, стоящими перед серверами БД, являются обработка, анализ и сохранение данных, то к ним предъявляется ряд требований по производительности и надежности. Кроме того, важным качеством для таких серверов будет является возможность масштабирования при увеличении числа рабочих мест и роста объема базы данных.

Наиболее распространённое программное обеспечение серверов баз данных – это

  • Microsoft SQL Server
  • Oracle Database
  • MySQL Database Server
  • PostgreSQL Database Server (используется, как «бесплатная замена» серверу Microsoft SQL в решениях 1С для простых сред с небольшим количеством пользователей)

Требования, которые предъявляет СУБДSQL к серверам баз данных:

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

Кроме того, учитывая, что на протяжении последних 4 поколений серверных процессоров производительность на одно физическое ядро увеличилась весьма незначительно, а также то, что производительность серверных процессоров (точнее – платформ в комплексе) ниже на одиночного пользователя, чем производительность «настольных» процессоров – то чем выше производительность выбранного процессора на ядро (читай – тактовая частота), тем выше будет скорость проведения документов и выполнения отчётов на этом сервере.

- оперативная память . выбирать её объем стоит примерно из следующего соотношения: объем, необходимый для комфортной работы ОС (2-4 ГБайт) + объем, необходимый для кэширования страниц базы данных в ОЗУ (это не менее 50% от размера базы данных, который предполагается на протяжении эксплуатации сервера, в идеале – лучше иметь объем ОЗУ, превышающий объем БД)

Например, объем БД 50 ГБайт, рост объема в год 10 ГБайт, сервер предполагается эксплуатировать на этой задаче не менее 3 лет – следовательно, необходимый объем ОЗУ составляет не менее 64 ГБайт (50% от 80 ГБайт - предполагаемого объема БД на конец эксплуатации сервера, 4 ГБ – операционной системе и остальное – выравнивание на объем модуля ОЗУ и запас для возможных расширений).

- дисковая подсистема . диски: 1 диск SATA де-факто может обеспечивать работу 1 пользователя, 1 диск 10К об/мин – до 10 пользователей, 1 диск 15К об/мин – до 10-15 пользователей, 1 SSD Enterprise-class MLC – до 100 пользователей.

Есть также вариант смешанного использования, когда SSD используются, как кэш для массива, состоящего из гораздо более «медленных» жестких дисков – но в этом случае объем такого кэша должен гарантированно превышать объем наиболее часто используемых данных.

- контроллеры . при количестве дисков до двух достаточно использовать программный RAID средствами операционной системы; при большем количестве – рекомендуется использовать аппаратный RAID с кэшем и его защитой (батареей либо Flash).

- внешние системы хранения данных (СХД) . при использовании с сервером СХД сервер должен обязательно содержать адаптеры (Host-Bus Adapter) с нужным для подключения интерфейсом.

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

Типичные схемы построения ИТ-инфраструктуры с сервером базы данных SQL

1. Стандартная двухзвенная схема:


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

2. Двухзвенная схема с терминальными или виртуальными рабочими местами:


Клиентские устройства (ПК, ноутбуки/нетбуки/неттопы, планшеты, мобильные телефоны) работают с виртуальным рабочим столом или виртуальной операционной системой, располагающейся на защищённом сервере внутри компании, на которых, в свою очередь, выполняется ПО, работающее с базой данных (пример – «тонкий клиент» 1С).

3. Двухзвенная схема с Web/Java-клиентом:

  • В этом варианте те, кто работает с базой данных, используют любое удобное им лично клиентское устройство с браузером внутри (пример – «Web-клиент» 1С).


    4. Классическая трёхзвенная схема.



    В этом варианте бизнес-логика частично или полностью выносится с сервера базы данных – для того, чтобы обеспечить универсальность работы приложения (возможность работать с серверами баз данных разных производителей), а также упростить его масштабирование. Пример – трёхзвенное решение от 1С.

    Разумеется, существуют и варианты трёхзвенной схемы с виртуальными ОС/рабочими столами, Web/Java –клиентами (иногда и разными – для разных задач), но они проектируются всегда как уникальные решения, исходя из особенностей конкретного бизнеса и свойств используемого им программного обеспечения.

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

  • серверы баз данных:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Бизнес в сети интернет - Серверы баз данных

    Бизнес в сети интернет — Серверы баз данных

    Одним из наиболее широко используемых терминов Интернет базы данных, которая ссылается на структурированную совокупность данных и информации, которая хранится в компьютере.

    Сервер баз данных обеспечивает пространство для хранения базы данных. Системы управления базами данных (DBNS) позволяют отдельным лицам и предприятиям изменять, хранить и извлекать информацию.

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

    Каждая база данных имеет различные формат и стиль. Серверы баз данных являются весьма полезными в централизации формата и стиля различных баз данных.

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

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

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

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

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

    Они дают вам инструменты для шифрования и защиты данных в виде резервного копирования.

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

    Физическое представление имеет более технический характер с физическим расположением данных в устройствах прямого доступа к хранилищу.

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

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

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

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

    Бизнес в сети интернет- Серверы баз данных. имеют специальные языки моделирования. Эти языки помогают общаться с базами данных сервера для эффективной работы.

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

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

    Администраторов данных и системных аналитиков, решении о общем дизайне системы сервера баз данных.
    __
    Пост создан при поддержке reklamanatrotuare.ru — тут можно заказать качественную рекламу на асфальте на выгодных условиях.

    Серверы баз данных

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

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

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

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

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

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

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

    Упоминавшиеся выше протоколы удаленного вызова процедур особенно важны в системах управления базами данных, основанных на архитектуре "клиент-сервер".

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

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

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

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

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

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

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

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

    Архитектура клиент-сервер

    7.1.Архитектура "клиент-сервер". 7.1.1.Основные понятия.

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

    Основной принцип технологии "клиент-сервер" заключается в разделении функций приложения на три группы:
    • ввод и отображение данных (взаимодействие с пользователем);
    • прикладные функции, характерные для данной предметной области;
    • функции управления ресурсами (файловой системой, базой даных и т.д.)
    Поэтому, в любом приложении выделяются следующие компоненты:
    • компонент представления данных
    • прикладной компонент
    • компонент управления ресурсом
    Связь между компонентами осуществляется по определенным правилам, которые называют "протокол взаимодействия". 7.1.2.Модели взаимодействия клиент-сервер.

    Компанией Gartner Group. специализирующейся в области исследования информационных технологий, предложена следующая классификация двухзвенных моделей взаимодействия клиент-сервер (двухзвенными эти модели называются потому, что три компонента приложения различным образом распределяются между двумя узлами):

    Исторически первой появилась модель распределенного представления данных, которая реализовывалась на универсальной ЭВМ с подключенными к ней неинтеллектуальными терминалами. Управление данными и взаимодействие с пользователем при этом объединялись в одной программе, на терминал передавалась только "картинка", сформированная на центральном компьютере.

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

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

    Позже была разработана концепция активного сервера, который использовал механизм хранимых процедур. Это позволило часть прикладного компонента перенести на сервер (модель распределенного приложения). Процедуры хранятся в словаре базы данных, разделяются между несколькими клиентами и выполняются на том же компьютере, что и SQL-сервер. Преимущества такого подхода: возможно централизованное администрирование прикладных функций, значительно снижается сетевой трафик (т.к. передаются не SQL-запросы, а вызовы хранимых процедур). Недостаток - ограниченность средств разработки хранимых процедур по сравнению с языками общего назначения (C и Pascal).

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

    Сейчас ряд поставщиков коммерческих СУБД объявило о планах реализации механизмов выполнения хранимых процедур с использованием языка Java. Это соответствует концепции "тонкого клиента", функцией которого остается только отображение данных (модель удаленного представления данных).

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

    7.1.3.Мониторы транзакций.

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

    Для общения прикладной программы с монитором транзакций используется специализированный API (Application Program Interface - интерфейс прикладного программмирования), который реализуется в виде библиотеки, содержащей вызовы основных функций (установить соединение, вызвать определенный сервис и т.д.). Серверы приложений (сервисы) также создаются с помощью этого API, каждому сервису присваивается уникальное имя. Монитор транзакций, получив запрос от прикладной программы, передает ее вызов соответствующему сервису (если тот не запущен, порождается необходимый процесс), после обработки запроса сервером приложений возвращает результаты клиенту. Для взаимодействия мониторов транзакций с серверами баз данных разработан протокол XA. Наличие такого унифицированного интерфейса позволяет использовать в рамках одного приложения несколько различных СУБД.

    Использование мониторов транзакций в больших системах дает следующие преимущества:
    • Концентрация всех прикладных функций на сервере приложений обеспечивает значительную независимость как от реализации интерфейса с пользователем, так и от конкретного способа управления ресурсами. При этом также обеспечивается централизованное администрирование приложений, поскольку все приложение находится в одном месте, а не "размазано" по сети по клиентским рабочим местам.
    • Монитор транзакций в состоянии сам запускать и останавливать серверы приложений. В зависимости от загрузки сети и вычислительных ресурсов он может перенести или скопировать часть серверных процессов на другие узлы. Это обеспечивает достижение баланса загрузки.
    • Обеспечивается динамическая конфигурация системы, т.е. без ее остановки может быть добавлен новый сервер ресурсов или сервер приложений.
    • Повышается надежность системы, т.к. в случае сбоев сервер приложений может быть перемещен на резервный компьютер.
    • Появляется возможность управления распределенными базами данных (подробнее см. следующий параграф).
    Более подробно вопросы использования мониторов транзакций освещены в следующих статьях: Г.М.Лодыженский Технология "клиент-сервер" и мониторы транзакций Открытые системы, N 3, 1994. Г.М.Лодыженский Tuxedo System: разработка систем клиент-сервер. СУБД N 1 - 2. 1996 г Литература:
    • Г.М.Лодыженский Системы баз данных. Коротко о главном. СУБД N 1. 2. 3. 4 1995.
    • Д.Васкевич Стратегии клиент/сервер. Диалектика, Киев, 1997.
    Следующая глава: 7.2.Обработка распределенных данных. Введение в базы данных. (c) Зеленков Ю.А. (yz@yars.free.net ) 1997 г. (c) Центр Интернет ЯрГУ

    Серверы баз данных (ISPmanager)

    Серверы баз данных (ISPmanager)

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

    В данном модуле вы можете настроить взаимодействие панели управления с серверами баз данных на локальном или удалённых серверах.

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

    Модуль «Серверы баз данных»

    Просмотр списка зарегистрированных серверов баз данных Регистрация нового сервера баз данных Изменение параметров сервера баз данных Отмена регистрации сервера баз данных

    Просмотр списка зарегистрированных серверов баз данных
    • Имя - название сервера баз данных.
    • Тип - тип сервера баз данных (MySQL. PostgreSQL).
    • IP-адрес - адрес удалённого сервера, на котором располагается сервер баз данных. Если сервер локальный, то указывается значение localhost.
    Регистрация нового сервера баз данных

    Чтобы создать новый сервер баз данных, нажмите кнопку "Создать" и заполните поля формы:

    Модуль «Серверы баз данных»

    • Имя - укажите название сервера баз данных.
    • Тип базы данных - укажите тип базы данных. На текущий момент поддерживаются серверы MySQL. PostgreSQL.
    • Тип соединения - укажите размещение сервера баз данных: Локальный или Удалённый.
    • IP-адрес - укажите IP-адрес удаленного сервера баз данных. (Поле отображается при выборе типа соединения - "Удаленный")
    • Имя пользователя - укажите имя пользователя баз данных для административного доступа к серверу.
    • Пароль - укажите пароль пользователя баз данных для административного доступа к серверу баз данных.
    • Кодировка - укажите кодировку, используемую по умолчанию для таблиц на сервере баз данных MySQL. (Поле отображается при выборе типа соединения - "Локальный")
    • Путь до сокета - укажите путь к файловому сокету локального сервера баз данных, например, /tmp/mysql.sock. Если используется PostgreSQL, вам необходимо указать директорию, в которой лежит сокет. Если вы хотите использовать значения по умолчанию, оставьте это поле пустым. (Поле отображается при выборе типа соединения - "Локальный")
    • Доступ - из списка выберите тип доступа к серверу баз данных. Вы можете указать "Запретить выборочно", "Разрешить выборочно" или "Разрешить для всех".
    • Пользователи - данное поле доступно, если вы выбрали тип доступа "Запретить выборочно" или "Разрешить выборочно". Укажите пользователей панели управления, которым вы хотите разрешить использование сервера баз данных. Если вы укажите в списке имя реселлера. то доступ будет разрешён всем его пользователям.
    Изменение параметров сервера баз данных

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

    Отмена регистрации сервера баз данных

    Если вы хотите, чтобы панель управления перестала взаимодействовать с тем или иным сервером баз данных, выберите его в списке и нажмите кнопку "Удалить". Для предотвращения случайного удаления программа попросит подтвердить или отменить ваши действия. После нажатия кнопки "ОК" регистрация выделенного сервера баз данных будет отменена.

    Отмена регистрации сервера баз данных не подразумевает удаление баз данных на нём, созданных с помощью панели управления.

    Была ли эта информация полезной? Да | Нет

    Серверы баз данных

    Часто задаваемые вопросы (FAQ) Разновидности СУБД

    A1: СУБД — Система Управления Базами Данных (DBMS — DataBase Management System).
    Программа, либо комплекс программ, предназначенных для полнофункциональной работы с данными. Как правило, включает в себя инструменты для создания и изменения структуры хранения наборов данных, а также средства доступа к хранимым данным. с возможностью их чтения, добавления, изменения и удаления. При этом, у большинства СУБД имеется собственный встроенный язык (возможно не один) для работы с данными.
    Сама база данных (БД) обычно находится просто в файлах закрытого, либо открытого формата.

    A2: Под настольной (desktop) обычно подразумевается СУБД, которая всегда запускается на компьютере пользователя. хотя сама база данных может находиться в другом месте. В результате несколько копий СУБД могут обращаться к одной базе данных.
    Серверная (server) СУБД, как правило, запускается в на той же машине (сервере баз данных), где находятся файлы БД. Непосредственно к базе данных обращается лишь один экземпляр СУБД. Пользовательские приложения общаются только с этой СУБД через ее API, независимо от того, работают они на той же машине или на другой.
    Для многопользовательских баз данных более эффективным и надежным вариантом является серверная СУБД. В ней гораздо быстрее происходит доступ к данным, и значительно проще решаются конфликты между разными пользователями.

    A3: Реляционная (relational) БД отличается способом представления информации, находящейся в ней.
    Данные в такой базе хранятся в плоских таблицах. Каждая таблица имеет собственный, заранее определенный набор именованных колонок (полей). Поля таблицы обычно соответствуют атрибутам сущностей, которые необходимо хранить в базе. Количество строк (записей) в таблице неограниченно, и каждая запись соответствует отдельной сущности.
    Каждая таблица должна иметь первичный ключ (ПК) — поле или набор полей, содержимое которых однозначно определяет запись в таблице и отличает ее от других.
    Связь между двумя таблицами обычно образуется при добавлении в первую таблицу поля, содержащего значение первичного ключа второй таблицы.
    Реляционные СУБД (РСУБД) предоставляют средства для всевозможных пересечений и объединений любых таблиц, отбора записей по разнообразным условиям, группировки и сортировки результатов.
    Реляционная база данных сочетает наглядность представления информации с простотой (относительной) реализации своей концепции и является наиболее популярной структурой для хранения данных на сегодняшний день.
    Достаточно подробно реляционные БД описаны в книгах [1]. [2] и [3].

    A4: Сервер для управления реляционными БД обычно называют SQL-сервером.
    SQL (Structured Query Language — язык структурированных запросов) является стандартным языком для работы с реляционными БД. Кроме стандартных реляционных операций, этот язык предоставляет возможности для изменений структуры таблиц.
    Различные варианты SQL используются во всех, как серверных, так и в настольных реляционных СУБД.

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

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

    A6: В объектно-ориентированных БД (ООБД), данные представлены в виде объектов различных классов.
    Как правило, имеются возможности создавать новые классы, наследовать их от уже имеющихся, задавать произвольные атрибуты и методы для классов.
    Для доступа к объектам, в каждой ООБД обычно предусматривается свой собственный язык, либо расширение другого языка. Пока еще ООБД недостаточно развиты и не представляют серьезной конкуренции SQL-серверам, хотя и выглядят более предпочтительными для разработчиков.
    Производители SQL-серверов тоже, в свою очередь, иногда делают попытки соорудить над реляционным ядром сервера объектно-ориентированную надстройку.
    Более подробно ООБД описаны в статье [4].

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

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

    Сервер и клиент

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

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

    A3: На пользовательских машинах. обычно устанавливаются специальные программы-шлюзы. которые, через сетевой протокол, обеспечивают связь с сервером БД. Через эти шлюзы, приложения передают запросы серверу и получают результаты.
    Часто, дополнительно устанавливается библиотека (ODBC, OLE DB и т.п.), предоставляющая приложениям API для работы с сервером БД.

    A4: Довольно распространена модель работы, когда клиент обращается не непосредственно к серверу БД, а к промежуточной программе. Эта программа обычно называется сервером приложений.
    Такую архитектуру называют «трехзвенной». в отличие от «двухзвенной» архитектуры клиент-сервер.

    A5: Сервер приложений может использоваться для многих целей.
    Как правило, сервер приложений находится на отдельной машине. На него можно переложить всю функциональность программы. оставив клиенту только интерфейсную часть. Это разгрузит клиента и сервер БД от вычислений.
    Также, при большом количестве пользователей, можно использовать несколько серверов приложений для распределения нагрузки.
    А для ускорения доступа к часто используемым таблицам, их обычно кэшируют на сервере приложений.

    A6: «Тонким» клиентом обычно называют пользовательское приложение, не содержащее никакой функциональности. и предназначенное только для ввода/вывода информации. Вся обработка данных производится на сервере БД, либо на сервере приложений.
    Зачастую, такой клиент изначально не содержит вообще никаких возможностей, а подгружает дополнительные модули с сервера. по мере необходимости. Обычно, в качестве «тонкого» клиента, выступают Web броузер + HTML/ASP/Java.
    «Толстый» клиент содержит всю функциональность и интерфейсную часть в себе, и при любом изменении, требует замены у всех пользователей.

    Реляционные базы данных: Теория

    A1: Данные в реляционной БД хранятся в плоских таблицах. Каждая таблица имеет собственный, заранее определенный набор именованных колонок (полей). Поля таблицы обычно соответствуют атрибутам сущностей, которые необходимо хранить в базе. Количество строк (записей) в таблице неограниченно, и каждая запись соответствует отдельной сущности.
    Полное описание реляционных БД можно найти в книгах [1]. [2] и [3].

    A2: Записи в таблице отличаются только содержимым их полей.
    Две записи, в которых все поля одинаковы. считаются идентичными.
    Каждая таблица должна иметь первичный ключ (ПК) — поле или набор полей, содержимое которых однозначно определяет запись в таблице и отличает ее от других.
    Отсутствие первичного ключа и наличие идентичных записей в таблице обычно возможно, но крайне нежелательно.

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

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

    A5: Нет.
    Реляционная алгебра оперирует множествами. в которых порядковый номер элемента не несет никакой смысловой нагрузки. Записи отличатся только содержимым их полей. Две записи, в которых все поля одинаковы. будут абсолютно идентичны в реляционной БД.

    Реляционные базы данных: Особенности SQL-серверов

    A1: SQL (Structured Query Language — язык структурированных запросов) является стандартным языком для работы с реляционными БД.
    Разделяется на две основные части: DDL (Data Definition Language — язык определения данных) и DML (Data Manipulation Language — язык обработки данных).
    DDL предоставляет средства для создания и изменения структуры хранения данных (БД, таблиц, процедур, типов данных и т.п.).
    DML предназначен для чтения и изменения данных.
    Основные операторы DML: select — выборка, insert — вставка, update — изменение, delete — удаление.
    Также, с помощью SQL. часто реализован доступ к служебным функциям SQL-сервера (заведение пользователей, создание резервных копий БД и т.д.).
    Подробное описание операторов и возможностей SQL имеется в книге [1].

    A2: Во многих случаях, необходимо проведение группы операций по изменению данных таким образом, чтобы эта группа обладала свойством атомарности (либо вся целиком выполняется, либо вся целиком не выполняется).
    Такая группа операций называется транзакцией.
    В SQL-серверах существуют операторы, позволяющие обозначить начало транзакции (begin transaction), ее успешное завершение (commit transaction), либо откат транзакции (rollback transaction).

    A3: Любые изменения данных, проведенные внутри транзакции, записываются в специальный журнал транзакций (transaction log).
    При откате транзакции. данные восстанавливаются в прежнем виде, а записи об изменениях удаляются из журнала транзакций.

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

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

    A6: Перекрестная блокировка (deadlock) двух транзакций возникает при изменении одних и тех же записей в разном порядке.
    Последовательность действий, приводящая к перекрестной блокировке:
    1. Транзакция A изменяет запись X. Заблокирована X.
    2. Транзакция B изменяет запись Y. Заблокирована Y.
    3. Транзакция A пытается изменить запись Y. Остановлена A.
    4. Транзакция B пытается изменить запись X. Остановлена B.
    Сервер определяет перекрестную блокировку и откатывает одну из транзакций, возвращая ошибку соответствующему соединению. Аминь.
    Чтобы не выводить ошибку пользователю, обломанное соединение должно молча повторить транзакцию.

    A7: Для ускорения операций выборки данных.
    При поиске полей с определенным значением, сервер вынужден перебирать все записи в таблице. В этом случае, время поиска линейно зависит от размера таблицы.
    Индекс по полю, обычно представляющий собой бинарное дерево. дает возможность резко сократить время поиска. превратив эту зависимость в логарифмическую.
    Однако, наличие индексов в таблице, замедляет операции модификации данных.

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

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

    A10: Можно, практически во всех современных SQL-серверах. Различия только в синтаксисе определения и вызова функции.
    Кроме того, некоторые сервера позволяют использовать функции, написанные на других языках (не SQL).

    A11: Обычно, в SQL-серверах можно указать одно из числовых полей как автоматически нумеруемое. причем синтаксис определения сильно зависит от разновидности сервера.
    При вставке новой записи, такому полю присваивается значение поля предыдущей записи + заданное приращение. Как правило, значение подобного поля нельзя явно изменять с помощью DML.

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

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

    A14: Хранимые процедуры (SP — Stored Procedure) представляют собой последовательность команд на расширениях SQL, либо на других языках, поддерживаемых сервером. Могут принимать параметры и возвращать значение заданного типа.
    Часто используются для выполнения операций, напрямую связанных с логикой задачи. для которой проектировалась БД.
    Иногда, используются вместе с представлениями, для обеспечения безопасности БД (все изменения через SP, все выборки через view).

    A15: Обычно, для полей в таблицах могут использоваться только самые простые типы: числа (целые и дробные), строки (сильно ограниченные по длине), дата (и время), бинарные данные большого размера (для текста, графики и т.п.).
    В некоторых серверах допускается использование массивов и самодельных структур.

    A16: А хрен его знает. И это совсем не шутка, а его фактическое определение.
    Null не является пустым значением. Поэтому null + 1 = null. а не 1.
    Использование null означает переход от двузначной логики (true/false) к трехзначной (true/false/unknown), которая является более сложной и несколько непривычной.
    С другой стороны, логические операторы SQL обычно приспособлены для работы только с двузначной логикой. Поэтому использовать null для значений полей следует очень осторожно и только в тех случаях, когда без него никак нельзя обойтись. Поведение null хорошо описано в статье [5].

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

    A18: Вообще-то он есть (ANSI SQL 92), только вот поддержка его у производителей СУБД сильно хромает.
    Причем дело с эти настолько плохо. что может различаться даже синтаксис основных операторов DML. не говоря уже о функциях, триггерах и прочих особенностях SQL. Поэтому о совместимости говорить сложно, хотя кое-какие сдвиги в этом направлении имеются.
    Наиболее близки к стандарту: Borland InterBase, Microsoft SQL Server, IBM DB2 Universal Database.

    A19: Наиболее распространенным клиентским API является ODBC (Open DataBase Connectivity).
    ODBC-драйвера существуют на многих платформах и почти для всех SQL-серверов.

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

    Реляционные базы данных: Практические вопросы

    A1: Естественным ключом (ЕК) обычно называют первичный ключ, который является смысловым атрибутом (либо набором атрибутов) сущности. Как и любой другой атрибут, ЕК подвержен изменениям. а его уникальность часто бывает притянута за уши.
    Суррогатным ключом (СК), как правило, называется уникальное автонумеруемое целочисленное поле в таблице, которое и является первичным ключом. СК гораздо компактнее. чем ЕК, везде занимает одно поле одинакового типа. всегда неизменен и уникален.
    Более обоснованное сравнение СК и ЕК производится в статье [6].

    A2: Только в теории.
    Полностью нормализованная БД хороша для хранения данных. Но, на практике постоянно встречаются структуры, получение информации из которых, слишком сложно и медленно (а иногда и невозможно с помощью лишь оператора select).
    Дублирование информации в том или ином виде обычно необходимо для получения результатов выборки простыми запросами за приемлемое время.

    A3: А не надо их удалять. тогда и проблемы не будет.
    Проще всего держать в таблице дополнительное поле Deleted (default = false), а вместо удаления записи устанавливать Deleted = true. Для выборки можно использовать представление с внутреннем условием:

    Возможен и более сложный вариант: два дополнительных поля DateBegin (defaul = текущая_дата) и DateEnd (defaul = максимальная_дата). Вместо удаления записи необходимо установить DateEnd = текущая_дата, а условие для выборки будет:

    Во втором варианте есть возможность. не только иметь даты заведения/удаления записей, но и получать наборы записей на любую определенную дату с условием:

    A4: Самый простой вариант — это создать таблицу-журнал. в которую, при изменении записи. помещать следующую информацию: дату изменения, имя (Id) пользователя, имя (Id) изменяемой таблицы, ПК записи, имя (Id) изменяемого поля и предыдущее значение поля. преобразованное в строку.
    Запись в журнал можно делать либо триггерами, либо из приложения.
    Откат изменений следует производить специальной процедурой, которая должна восстановить значения полей на заданную дату и удалить соответствующие записи из журнала.
    Один из вариантов журнала имеется в статье [9].

    A5: Можно использовать сервер, который поддерживает историческую модель. например, PostgreSQL Server.
    В ином случае, можно, в дополнение к основной таблице, создать аналогичную таблицу истории. с двумя дополнительными полями: DateBegin и DateEnd.
    При вставке записи в основную таблицу, необходимо добавить такую же запись в таблицу истории, где DateBegin = текущая_дата, DateEnd = максимальная_дата.
    При модификации записи в основной таблице, нужно вставить измененную запись в таблицу истории, где DateBegin = текущая_дата, DateEnd = максимальная_дата. При этом у предыдущей соответствующей записи в таблице истории необходимо установить DateEnd = текущая_дата.
    При удалении записи в основной таблице, у последней соответствующей записи в таблице истории надо установить DateEnd = текущая_дата.
    Выборка из основной таблицы производится обычным образом, а из таблицы истории с условием:

    Сходные варианты представления истории рассматриваются в статье [10].

    A6: В таблицу, которую надо сделать иерархической, надо добавить поле Parent. содержащее значение ПК родительской записи.
    Далее, все зависит от задачи и возможностей сервера. Если нет необходимости углубляться в иерархию более чем на один уровень, либо сервер поддерживает рекурсивные запросы, то этого вполне хватит.
    Иначе, придется использовать дополнительные поля. либо вспомогательную таблицу.
    Подробно способы представления деревьев в реляционных БД описаны в статьях [7] и [8].

    A7: Вообще-то, в большинстве SQL-серверов есть системный каталог — набор стандартных таблиц, содержащих информацию обо всех объектах сервера и БД.
    Правда, таблицы эти предназначены не для разработчика, а для внутреннего использования самим сервером, поэтому найти там что-либо весьма проблематично. При этом, структура их может меняться даже в разных версиях одного сервера.
    Поэтому, желательно создать в БД собственный системный каталог. полностью описывающий структуру базы и взаимосвязи ее объектов. Такой каталог можно переносить на другой сервер вместе с БД, не заботясь о совместимости, а информацию из него можно легко использовать в приложении для каких-либо действий (вплоть до автоматической генерации самого приложения).
    Пример системного каталога приведен в статье [9].

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

    A9: Такие действия проще всего выполнять на клиенте.
    Если надо на сервере. то лучше использовать предназначенные для этого возможности оператора выборки.

    Когда ничего такого сервер не поддерживает, можно использовать в условии выборки подзапрос, возвращающий номер текущей строки результата (если поле сортировки не уникально, то в подзапрос нужно добавить еще какое-нибудь условие для обеспечения уникальности значений, возвращаемых подзапросом):

    В крайнем случае. можно выбирать данные во временную таблицу с дополнительным автонумеруемым полем RowNumber, а из нее затем делать выборку:

    A10: Самый правильный способ — это использовать вложенный запрос. в котором ищется максимальное значение поля. Затем найденное значение используется в условии основного запроса.

    Если максимальное значение необходимо искать не во всей таблице, а по определенному полю. то запрос будет следующего вида:

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

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

    A12: Нумерация записей очень легко делается на любом клиенте.
    Чтобы в запросе получить поле, соответствующее номеру записи. можно использовать подзапрос. возвращающий количество записей. меньших либо равных (сравнение — по полю сортировки) текущей записи:

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

    A13: Можно вообще хранить все дополнительные объекты в одной таблице. содержащей идентификатор объекта, идентификатор атрибута и само значение атрибута, преобразованное в строку.
    Чтобы не было мучительно больно при получении результатов запросов, лучше все-таки использовать несколько таблиц — отдельно для каждого типа данных.
    Более серьезный вариант универсального хранилища объектов рассмотрен в статье [11].
    PS: А чем была плоха идея насчет создания/изменения таблиц?

    Английские

    API — Application Program Interface
    DB — DataBase
    DBMS — DataBase Management System
    DDL — Data Definition Language
    DML — Data Manipulation Language
    FK — Foreign Key
    ODBC — Open DataBase Connectivity
    PK — Primary Key
    RDBMS — Relational DataBase Management System
    SP — Stored Procedure
    SQL — Structured Query Language

    Русские

    БД — База Данных
    ЕК — Естественный Ключ
    ООБД — Объектно-Ориентированная База Данных
    ООСУБД — Объектно-Ориентированная Система Управления Базами Данных
    ПК — Первичный Ключ
    РСУБД — Реляционная Система Управления Базами Данных
    СУБД — Система Управления Базами Данных
    СК — Суррогатный Ключ