Разделы презентаций


СУБД в архитектуре клиент-сервер

Содержание

СУБД в архитектуре «клиент-сервер» Группы функций программной системы:Функции отображения и ввода данных Уровень представления, Presentation Layer, PrezLayerПрикладные функции – логика предметной области Уровень бизнес- логики, Business Layer, BizLayerФункции доступа к базам

Слайды и текст этой презентации

Слайд 1СУБД в архитектуре «клиент-сервер»
File Server
Remote Data Access
Database Server
Application Server

СУБД в архитектуре «клиент-сервер»File ServerRemote Data AccessDatabase ServerApplication Server

Слайд 2СУБД в архитектуре «клиент-сервер»
Группы функций программной системы:
Функции отображения и ввода данных

Уровень представления, Presentation Layer, PrezLayer
Прикладные функции – логика предметной области Уровень

бизнес- логики, Business Layer, BizLayer
Функции доступа к базам данных Уровень данных, Database Layer, DataLayer
СУБД в архитектуре «клиент-сервер»	Группы функций программной системы:Функции отображения и ввода данных  Уровень представления, Presentation Layer, PrezLayerПрикладные

Слайд 3Модель «Файловый сервер» (File Server)
Достоинства:
Использование единых ресурсов сервера (больших НМД)
Недостатки:
Низкая защищенность

(уровень файловой системы)

Модель «Файловый сервер» (File Server)Достоинства:Использование единых ресурсов сервера (больших НМД)Недостатки:Низкая защищенность (уровень файловой системы)

Слайд 4Модель удаленного доступа к данным (Remote Data Access)
Достоинства:
Повышенная защищенность данных
Возможность управления

транзакциями
Недостатки:
Высокий сетевой трафик
Сложность координации многопользовательских приложений

Модель удаленного доступа к данным (Remote Data Access)Достоинства:Повышенная защищенность данныхВозможность управления транзакциямиНедостатки:Высокий сетевой трафикСложность координации многопользовательских приложений

Слайд 5Модель сервера баз данных (Database Server)
Основные черты:
БД соответствует предметной области

(концептуальная модель)
БД активна – реагирует на изменения данных
Имеет средства ограничения

доступа к данным
Имеет средства восстановления данных

Основа – хранимые процедуры и триггеры
Модель сервера баз данных (Database Server)Основные черты:БД соответствует предметной области (концептуальная модель)БД активна – реагирует на изменения

Слайд 6Модель сервера баз данных (Database Server)
Достоинства:
Уменьшение сетевой нагрузки
Уменьшение дублирования кода
Недостатки:
Высокая

загрузка сервера (BL, DL, СУБД)
Сложность разработки, если бизнес-логика частично реализуется

на клиенте
Модель сервера баз данных (Database Server)Достоинства:Уменьшение сетевой нагрузкиУменьшение дублирования кодаНедостатки:Высокая загрузка сервера (BL, DL, СУБД)Сложность разработки, если

Слайд 7Модель сервера приложений (Application Server)
Трехуровневая архитектура «клиент-сервер»
Клиент – уровень представления
Бизнес

логика – на отдельном сервере
СУБД – на отдельном сервере

Модель сервера приложений (Application Server)Трехуровневая архитектура «клиент-сервер»Клиент – уровень представленияБизнес логика – на отдельном сервереСУБД – на

Слайд 8Модель сервера приложений (Application Server)
Достоинства:
«Тонкий клиент» - менее дорогая аппаратура
Централизация

бизнес-логики – централизация сопровождения (поддержка, замена оборудования, администрирование)
Модульность – простая

модификация и замена ПО
Возможность равномерного распределения нагрузки
Недостатки:
Сложность реализации
Модель сервера приложений (Application Server)Достоинства:«Тонкий клиент» - менее дорогая аппаратураЦентрализация бизнес-логики – централизация сопровождения (поддержка, замена оборудования,

Слайд 9Модель сервера приложений (Application Server)
Web-приложение

Модель сервера приложений (Application Server)Web-приложение

Слайд 10Модель сервера приложений (Application Server)
Достоинства:
Простота реализации HTML
Независимость браузеров от платформы
Высокий

уровень стандартизации уровня представления (HTML)
Масштабируемость – доступ с произвольного клиента,

нет необходимости разворачивать на клиенте сложное ПО
Недостатки:
Низкая надежность из-за ненадежности глобальной сети
Слабая защищенность данных, передаваемых между клиентом и сервером приложения
Отсутствие контроля масштабируемости (неожиданно высокая нагрузка на сервер)
Ограниченная функциональность HTML



Модель сервера приложений (Application Server)Достоинства:Простота реализации HTMLНезависимость браузеров от платформыВысокий уровень стандартизации уровня представления (HTML)Масштабируемость – доступ

Слайд 11Знакомство с DLL
DLL – динамически связываемая библиотека
p.cpp
#include
y = get(5)
p.obj
p.exe
odbc.h
int get(int

x)
odbc.lib

имя: get
адрес: 1108
odbc.dll
после трансляции
после загрузки в память

единый процесс

Знакомство с DLLDLL – динамически связываемая библиотекаp.cpp#includey = get(5)p.objp.exeodbc.hint get(int x)odbc.libимя: getадрес: 1108odbc.dllпосле трансляциипосле загрузки в памятьединый

Слайд 12ODBC
Приложение
Менеджер драйверов
Драйвер
Драйвер
Драйвер
источники данных





ODBC – Open Database Connectivity открытая система связи

с базами данных
ODBC API
ODBC API

ODBCПриложениеМенеджер драйверовДрайверДрайверДрайверисточники данныхODBC – Open Database Connectivity открытая система связи с базами данныхODBC APIODBC API

Слайд 13ODBC
Задачи, выполняемые приложением:
выбор источника данных
предоставление SQL операторов на выполнение
получение результата
обработка

ошибок
запрос на выполнение фиксации или отката транзакции
отсоединение от источника данных
Задачи,

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

Задачи, выполняемые Драйвером драйверов:
подсоединяется к источнику данных
выявляет ошибки
преобразует SQL операторы в запросы, специфические для источника данных
передает данные и выполняет преобразование типов


ODBCЗадачи, выполняемые приложением:выбор источника данныхпредоставление SQL операторов на выполнениеполучение результатаобработка ошибокзапрос на выполнение фиксации или отката транзакцииотсоединение

Слайд 16ODBC

hEnv
hDbc
hStmt

Приложение
ODBC.DLL

Информация о среде
выполнения


Информация о соединении
Информация о команде
Преобразование дескриптора в адрес
Дескрипторы и объекты

ODBChEnvhDbchStmtПриложениеODBC.DLLИнформация о среде выполненияИнформация о соединенииИнформация о командеПреобразование дескриптора в адресДескрипторы и объекты

Слайд 17ODBC
1. Соединение с СУБД
SQLAllocEnv(&hEnv)
SQLAllocConnect(hEnv, &hDbc)
SQLDriverConnect(hDbc, …)
SQLAllocStmt(hDbc, &hstmt)
2. Выполнение запроса
SQLExecDirect(hstmt, command,

…) SQL запрос к СУБД
3. Получить результат запроса
SQLBindCol(hstmt, 1, …)

привязка колонок к переменным
SQLFetch(hstmt) перемещение курсора

4. Отсоединение от СУБД
SQLDisconnect(hDbc)
SQLFreeConnect(hDbc)
SQLFreeEnv(hEnv)

ODBC1. Соединение с СУБДSQLAllocEnv(&hEnv)SQLAllocConnect(hEnv, &hDbc)SQLDriverConnect(hDbc, …)SQLAllocStmt(hDbc, &hstmt)2. Выполнение запросаSQLExecDirect(hstmt, command, …) SQL запрос к СУБД3. Получить результат

Слайд 18ODBC
#include "stdafx.h"
#include

#undef UNICODE
#include
#include
#include
#include
#include
#include
#include

using

namespace std;


SQLCHAR connectionStringDSN[256] = "DSN=NorthWindConnection;UID=norcal; PWD=norcal;";
SQLCHAR connectionStringDriver[256] =
"DRIVER={SQL

Server};SERVER=LENA\\SQLEXPRESS;"
"UID=norcal;PWD=norcal;DATABASE=Northwind;";

void errorMessage(const char* s)
{
cout<< "*** Error *** " << s << endl;
}

void Message(const char* s)
{
cout << s << endl;
}
ODBC#include

Слайд 19ODBC
void DoSelect(SQLCHAR connectionString[256])
{
HENV hEnv;
HDBC hDbc;
HSTMT hStmt

= SQL_NULL_HSTMT;
RETCODE rc;
SQLSMALLINT cbOutConStr = 0;

// Получить соединение с СУБД
SQLCHAR

outConnectionString[256];
SQLAllocEnv(&hEnv);
SQLAllocConnect(hEnv, &hDbc);
rc = SQLDriverConnect(hDbc, NULL,
connectionString, SQL_NTS,
outConnectionString, sizeof(outConnectionString),
&cbOutConStr, SQL_DRIVER_COMPLETE);
//SQL_DRIVER_NOPROMPT SQL_DRIVER_COMPLETE

if(!(rc == SQL_SUCCESS) && !(rc == SQL_SUCCESS_WITH_INFO))
{
errorMessage("Error SQLDriverConnect");
return;
}

ODBCvoid DoSelect(SQLCHAR connectionString[256]){	HENV  hEnv; 	HDBC  hDbc;	HSTMT  hStmt = SQL_NULL_HSTMT;	RETCODE rc;	SQLSMALLINT cbOutConStr = 0;	// Получить

Слайд 20ODBC
SQLHSTMT hstmt;
rc = SQLAllocStmt(hDbc, &hstmt);
SQLCHAR command[256] = "SELECT EmployeeId, Address

FROM Employees";
rc = SQLExecDirect(hstmt, command, SQL_NTS);

SQLINTEGER EmployeeId;
SQLCHAR Address[60];
SQLINTEGER cbEmployeeId, cbAddress;

if

(rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO) {
SQLBindCol(hstmt, 1, SQL_C_ULONG, &EmployeeId, 0, &cbEmployeeId);
SQLBindCol(hstmt, 2, SQL_C_CHAR, Address, 60, &cbAddress);
while (TRUE) {
rc = SQLFetch(hstmt);
if (rc == SQL_ERROR)
{
errorMessage("Error in the fetch");
}
if (rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO)
{
cout << EmployeeId << " " << Address << endl;
} else {
break;
}
}
SQLDisconnect(hDbc);
SQLFreeConnect(hDbc);
SQLFreeEnv(hEnv);
}
else
errorMessage("Exec SQL error");
}
ODBC	SQLHSTMT hstmt;	rc = SQLAllocStmt(hDbc, &hstmt);	SQLCHAR command[256] =

Слайд 21ODBC
void ListDSN()
{
const short SQL_MAX_DSN_LENGTH_ = SQL_MAX_DSN_LENGTH;
UCHAR szDSN[SQL_MAX_DSN_LENGTH+1];
UCHAR szDescription[256];
short wDSNLen;
SQLSMALLINT wDesLen;
int

retCode;
SQLHENV hEnv = NULL;
string DSNName;
string resultString;
string Descr;

SQLAllocEnv(&hEnv);
retCode = SQLDataSources(hEnv, SQL_FETCH_FIRST,

szDSN, SQL_MAX_DSN_LENGTH_+1,
&wDSNLen, szDescription, 256, &wDesLen);
while(retCode == SQL_SUCCESS || retCode == SQL_SUCCESS_WITH_INFO)
{
DSNName = (string)((char *) szDSN);
Descr = (string)((char *) szDescription);
resultString += DSNName;
resultString += "\n";
retCode = SQLDataSources(hEnv, SQL_FETCH_NEXT, szDSN,SQL_MAX_DSN_LENGTH_+1,
&wDSNLen, szDescription, 256, &wDesLen);
}

SQLFreeEnv(hEnv);
Message(resultString.c_str());
}
ODBCvoid ListDSN(){	const short SQL_MAX_DSN_LENGTH_ = SQL_MAX_DSN_LENGTH;	UCHAR szDSN[SQL_MAX_DSN_LENGTH+1];	UCHAR szDescription[256];	short wDSNLen;	SQLSMALLINT wDesLen;	int retCode;	SQLHENV hEnv = NULL;	string DSNName;	string resultString;	string Descr;	SQLAllocEnv(&hEnv);	retCode

Слайд 22ODBC
void ShowMenu()
{
int choice = 0;
bool done = false;
do
{
cout

MENU ***"

<< "1 - list all DNS" << endl;
cout << "2 - select (using DNS)" << endl;
cout << "3 - select (using driver directly)" << endl;
cout << "Choice : ";
cin >> choice;
switch(choice)
{
default : done = true; break;
case 1 : ListDSN(); break;
case 2 : DoSelect(connectionStringDSN); break;
case 3 : DoSelect(connectionStringDriver); break;
}
}while(!done);
}


int main(int count, char* cparams[])
{
ShowMenu();
return 0;
}

ODBCvoid ShowMenu(){	int choice = 0;	bool done = false;	do	{		cout

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика