Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > продуктивность/безопасность БД


Автор: vern 27.11.2006, 03:04
несколько вопросов по продуктивности и безопасноти БД (стадия проектирования)
Есть БД кассовой системы
1) Если БД постоянно расширяется, и количество запросов увеличивается, как с этим справиться, чтобы БД не упала в конце концов?
2) Что лучше закешировать?
3) Как реализовать блокировку данных при попытке сразу нескольких клиентов изменить данные?
4) Как ограничить клиентам доступ к данным? ( хранение логина/пароля сервераДБ в клиенте/сервере приложения, в какой части приложения вообще возможно осуществлять запросы)
5) Как обезопасить общение клиента с сервером?

спасибо

Автор: LSD 27.11.2006, 08:58
Цитата(vern @  27.11.2006,  03:04 Найти цитируемый пост)
1) Если БД постоянно расширяется, и количество запросов увеличивается, как с этим справиться, чтобы БД не упала в конце концов?

1. Проектировать с учетом роста, чтобы не было узких мест (типа одной гигантской таблицы, к которой идет 99% запросов)
2. Выбрать СУБД которая хорошо масштабируется (Oracle, SQL Server, DB2 и т.д.)


Цитата(vern @  27.11.2006,  03:04 Найти цитируемый пост)
2) Что лучше закешировать?

Конечно наиболее часто используемые вещи smile


Цитата(vern @  27.11.2006,  03:04 Найти цитируемый пост)
3) Как реализовать блокировку данных при попытке сразу нескольких клиентов изменить данные?

Лучше делать это средствами БД, например select for update.


Цитата(vern @  27.11.2006,  03:04 Найти цитируемый пост)
4) Как ограничить клиентам доступ к данным? ( хранение логина/пароля сервераДБ в клиенте/сервере приложения, в какой части приложения вообще возможно осуществлять запросы)

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


Цитата(vern @  27.11.2006,  03:04 Найти цитируемый пост)
5) Как обезопасить общение клиента с сервером?

Если имеется в виду защита канала передачи данных, то тут или надо использовать средства БД (у Oracle точно такое есть), или использовать 3- звенку.

Автор: Gunslinger 7.9.2007, 20:36
Вытянул старую тему. Не хочу новую создавать. LSD, что такое 3хзвенка?

Автор: Anark1 7.9.2007, 20:51
Цитата(Gunslinger @ 7.9.2007,  20:36)
Вытянул старую тему. Не хочу новую создавать. LSD, что такое 3хзвенка?

Компьютер пользователя (Клиент) -> Компьютер сервера приложений (Сервер) -> БД (Удаленный сервер)

Автор: Gunslinger 8.9.2007, 09:54
Т.е. между клиентом и сервером с бд добавляется промежуточное звено? Для чего? Как оно повышает безопасность? Отфильтровывает запросы, отсекая подозрительные от БД? Это защита от нсд, а как тогда с дос атакой? Нужно физически разносить сервер приложений и сервер с бд или они работают как разные процессы и задосеный сервер приложений без проблем можно перезагрузить без угроз серверу бд?

Автор: Riddler 8.9.2007, 11:47
Цитата(Gunslinger @  8.9.2007,  09:54 Найти цитируемый пост)
Т.е. между клиентом и сервером с бд добавляется промежуточное звено? Для чего? Как оно повышает безопасность? Отфильтровывает запросы, отсекая подозрительные от БД? Это защита от нсд, а как тогда с дос атакой? Нужно физически разносить сервер приложений и сервер с бд или они работают как разные процессы и задосеный сервер приложений без проблем можно перезагрузить без угроз серверу бд? 

По прядку вопросов:
1. Да
2. Если средствами СУБД канал не шифруется, то можно шифровать средствами среднего звена
3. Отсутствие прямого доступа к БД всегда положительно сказывается на безопасности, так как на среднем звене может быть и не реализовано администрирование БД, так что если кто-то получит доступ к системной учетке, и не будет знать о пути прямого доступа к БД, то он не сможет на пакостить.
4. И да и нет, в зависимости от ситуации
5. Смотри свой следующий вопрос
6. Это идеальный вариант, но в ряде случаев среднее звено и БД могут располагаться в пределах одного физического сервера.

Автор: Anark1 8.9.2007, 15:08
Ко всему что сказал Riddler хочу добавить, что блок
Код

Компьютер сервера приложений (Сервер) -> БД (Удаленный сервер) 

станет универсальным. Например, к нему можно будет прикрутить вэб-интерфейс и т.д.
Плюс появится кроссплатформенность, упрощение настройки клиентской части.

Gunslinger, если интересно то привожу несколько разновидностей удаленных модулей данных:
- Remote Data Module
- WebSnap Data Module
- SOAP Data Module
- Transactional Data Module

Автор: Gunslinger 9.9.2007, 14:29
Riddler, спасибо за подробный ответ (извини, что напряг со структуризацией вопросов, впредь не буду так делать).

Anark1, что такое удаленные модули данных? Я в сетевых технологиях - как из дремучего леса вышел. В гугле набрал "что такое Remote Data Module", выдал русскоязычную страницу http://www.sdteam.com/?tid=727. Там про бизнес-логику написано. А что это такое? Написано, что реализуется в сервере приложений.
Структурирую:
1. Что такое удаленные модули данных?
2. Что такое бизнес-логика?
Есть какая-нибудь обзорная литература, чтобы почитать? Про развитие сетевых технологий, причины создания брокеров, corba и т.п?
А то в универе на информационных технологиях учился, а чувствую себя анахронизмом. Только поверхностно в чем-то разбираюсь.

Автор: Anark1 9.9.2007, 16:24
Бизнес логика
http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D0%B7%D0%BD%D0%B5%D1%81-%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0

Модуль данных - основа сервера, а данном случае для разных серверов используются разные модули данных.
Вот тут например про технологию DataSnap
http://www.podgoretsky.com/ftp/Docs/Delphi/D7/d7stp/Glava20/Index0.html

Автор: Gunslinger 10.9.2007, 10:55
Anark1, спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)