русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ИНДЕКСЫ НА СЕРВЕРЕ


Дата добавления: 2015-07-09; просмотров: 600; Нарушение авторских прав


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

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

В локальных базах данных индексы хранятся линейно. Это как колонка из упорядоченных данных, и для строк это то же самое, что выстроить все слова по алфавиту. Конечно же, та­кой индекс упрощает поиск. Когда происходит сканирование по индексу и когда программа видит, что уже пошло слово больше, чем задано в условии поиска, сканирование может прекращаться и не придется просмат­ривать всю базу данных. Например, поищем слово "Абажур". Оно будет где-то в начале, и чтобы его найти, нужно просканировать всего лишь начало таблицы, не дальше, чем все слова на букву А. За счет того, что данные упорядочены, мы можем быть уверенными, что все остальные слова будут на буквы Б, В и т.д.

В случае с серверной базой индексы чаще всего (в зависимости от базы и типа индекса) хранятся немного подругому – в виде дерева. Сколько слов надо проверить для поиска сло­ва "якорь" в базе данных при линей­ном индексе? По сути, практически все. При древовидном хранении ин­декса - не более чем для слова "Аба­жур". Для пояснения древообразного индекса рассмотрим классическую за­дачу (в реальности все немного слож­нее, но идея такая же). В самом верху дерева хранится алфавит. Программа находит букву А и спускается на уро­вень ниже. Здесь она находит все слова на буквы А, Б и двигается еще ниже. И так - пока не найдется нужное слово



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


ТРЕТИЙ УРОВЕНЬ

 

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

Я работал в одной фирме (не будем тыкать в нее вилами), у которой было несколько офисов по России, и в каж­дом из них - парк компьютеров из 20-30 штук. В московском офисе эта цифра превышала сотню. Корпора­тивные программы обновлялись каж­дые две недели (вносились измене­ния, добавления и т.д.). Бедные админы в момент обновлений работали по субботам, чтобы пропатчить софт на каждой машине и убедиться в функ­циональности. Как решить эту проб­лему?

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

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

Представим себе классическую за­дачу – появление новой версии базы данных или переход на базу качест­венно более нового уровня. Ну не хватает нам уже возможностей MySQL, захотелось заполучить всю мощь Oracle. Для этого переустанав­ливается сервер баз данных, изменя­ется сервер приложений на подклю­чение к новой базе - и клиенты гото­вы к работе. Их обновлять не надо!

Но самое интересное то, что клиен­тская программа может быть какой угодно. Можно написать сценарии, ко­торые позволят работать с сервером приложении прямо из браузера. В этом случае с базой смогут работать пользователи на любой платформе (Windows, Linux и т.д.).


ЛОГИКА

 

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

ментально и не надо даже обновлять сервер приложений.

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

Допустим, сервер приложений и ба­за данных находятся на разных сер­верах. Результаты запросов будут сначала идти через коммутатор от ба­зы данных к серверу приложений, а затем через тот же коммутатор к компьютерам клиентов. Таким обра­зом, по сети дважды пролетают одни и те же данные. Чтобы от этого изба­виться, я чаще всего объединяю в од­ном физическом сервере логику и данные.

ИТОГО

Что же выбрать для своего проек­та? Все очень просто. Если ты пи­шешь базу, с которой будет работать одновременно только один человек, то однозначный выбор – локальная база. Я больше всего люблю MS Access за его надежность и за то, что драйверы доступа к этой базе есть на всех компьютерах (особенно если там установлен MS Office) и их не надо тя­нуть с инсталлятором.

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

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


ВИДЫ СТРУКТУР БАЗ

 

База данных (БД) – это электронное хранили­ще какой-либо инфор­мации, имеющее свою определенную, наибо­лее удобную и функциональную структуру. Для создания баз данных и работы с ними используют различные СУБД (системы управления базами данных). Базы данных различаются по своей структуре: дореляционные (на инвертированных списках, иерар­хические системы и сетевые СУБД), реляционные и постреляционные (например, объектные).



<== предыдущая лекция | следующая лекция ==>
ОСОБЕННОСТИ КЛИЕНТ-СЕРВЕРА | АРХИТЕКТУРЫ СУБД: ТЕХНОЛОГИЯ ЛОКАЛЬНЫХ (НАСТОЛЬНЫХ) БД


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.628 сек.