Multiple DBs vs One DB

Все, что вы хотели знать о программизме, но боялись спросить.
StS
Завсегдатай
Сообщения: 301
Зарегистрирован: 04 май 2005, 11:33

Multiple DBs vs One DB

Сообщение StS »

Кто-нибудь занимается разработкой приложений и баз для ASP (Application Service Providers)?

Рассмотрим два подхода.
1. Single DB for multiple customers.
Преимужества: простота администрирования. Других я не вижу.

Недостатки: В каждой таблице должен быть поле-номер клиента; все запросы имеют WHERE clientNo=number. Это головная боль для разработчкиов приложения и огромные возможности для ошибок (забыл WHERE - и получил чужие данные). Невозможно использовать security на уровне DB (сомневаюсь что security будет не на application level, но все-таки).


2. One DBMS, multiple databases; one DB per client.
Преимужества: Гибкость. С отдельной ДБ отдельного клиента можно творить что хошь.
Невозможно ошибочно получить чужие данные.
Производительность. Поиск по композитному ключу всегда будет медленнее поиска по single-field key.

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


Теперь самое интересное. Одно и то же приложение будет инсталлироваться по типу one hardware server per customer для крупных клиентов и one hardware server for multiple clients для мелких клиентов. По какому пути пойти? Для меня очевидны преимущества второго метода. Но есть сомневающиеся товарищи. Кто-нубудь что-нубудь может сказать в защиту первого подхода? Может я чего не понимаю? Повторю, что это не одна инсталяция одного приложения для нескольких клиентов, а несколько инсталяций. Но основная идея - иметь одно и то же (конфигурируемое) приложение для всех. А это значит - одна и та же структура DB для всех. А это значит что крупные клиенты будут использовать композитные ключи несмотря на то что они одни на своем сервере.

Что скажут ДБ гуру (или гуры?)


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

Всем заранее спасибо.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

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

ЗЫ.... зовите работать, я вам нарисую как положено ;)
StS
Завсегдатай
Сообщения: 301
Зарегистрирован: 04 май 2005, 11:33

Сообщение StS »

папа Карло писал(а):данные делить надо... много баз, для много клиентов. так работает моя пред система.... там и пользователей тысячи и данных валом.
много баз, для много клиентов, [trn] no odna baza dlya kazhdogo?[/trn]
папа Карло писал(а): ЗЫ.... зовите работать, я вам нарисую как положено ;)
[trn]V Toronto? A ty poedesh' na mesyac?

Vse, sovsem ubezhal
[/trn]
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

StS писал(а):[trn] no odna baza dlya kazhdogo?[/trn]
зависит от имплементации, но данные одного или многих клиентов живут в одной "логической" базе. внутри физической базы на одном серваке много клиентов, которые могут каждый иметь отдельный логический сет или иногда работать группами над одинаковыми сетами.
Zy
Маньяк
Сообщения: 4706
Зарегистрирован: 20 янв 2005, 19:11

Сообщение Zy »

А сколько клиентов? Если тысячи, то каждому базу....

А почему на view не сделать? Каждому юзеру свои вьюшки. Никто никуда не залезет. Но тоже не супер.

Я бы отделил уровень БД (как и логики, впрочем) на другой уровень со своим API. Для работы с ним надо открыть новую сессию, в которой id клиента будет создаваться автоматом и использоваться в работе этой сессии на стороне уровня БД. Разработчику не надо работать с id клиента, лишнее это. Т.е. что-то типа JAAS в Java: разработчик пишет, а админ конфигурирует.
BB
Частый Гость
Сообщения: 41
Зарегистрирован: 02 авг 2005, 16:14
Откуда: Vancouver

Сообщение BB »

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

Проблемы с администрированием при многих базах (10 это не много) решаются автоматизацией задач администрирования (скрипты) и/или использованием SQL Maintenance plans.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

сразу скажу, делать каждому пользователю персональную базу во многих случаях будет самоубийство.
Zy
Маньяк
Сообщения: 4706
Зарегистрирован: 20 янв 2005, 19:11

Сообщение Zy »

Еще преимущества многих баз:
В принципе, каждый acount можно рассматривать как отдельную БД: тебе же "пересылают" твой счет за телефон или банковские транзакции?

То же самое и с пользователями: каждый пользователь(клиент) - это на самом деле аккаунт. Зачем их бить на отдельные базы?

Я не администратор, поэтому на меня можно не ориентироваться, но как разработчик скажу: мне должно быть по-фигу как там лежат данные, если это не так - админа в Бобруйск :-)

И еще - не надо из приложения уровня интерфейса или бизнес-логики работать с БД, это не серьезно и в результате выльется в геморрой при любом количестве клиентов, большем нуля.
BB
Частый Гость
Сообщения: 41
Зарегистрирован: 02 авг 2005, 16:14
Откуда: Vancouver

Сообщение BB »

Я не администратор, поэтому на меня можно не ориентироваться
Я администратор, поэтому на меня можно ориентироваться :lol:

[trn]Esli ser'ezno... ja imel v vidu, chto, esli prilozhenie rabotaet v ASP modeli, ono, verojatno, rabotaet i otdel'no. V wtom sluchae nekotorye pol'zovateli trebujut kopiyu ih dannyh celikom - v vide polnoj bazy prilozhenija, chtoby ispol'zovat'[/trn] in-house [trn].

na samom dele nel'zja skazat' odnoznachno chto luchshe - ne hvataet detalej.[/trn]
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

зависит от требований всегда. и дизайн и имплементация.
Yuri Dimant
Пользователь
Сообщения: 107
Зарегистрирован: 02 авг 2004, 22:00

DB

Сообщение Yuri Dimant »

STS и даже не думаи, только одна база данных.Один вопрос- база/ы данных будут на одном сервере или на разных?
И что значит "забыл WHERE condition"? И почему нельза security?
Представь себе ,sql server дожен будет "админить" несколко дб(инфо,system data) вместо однои дб. И backup db ты мозеш; зафигачить (copy) В 100 разных мест
Почитаи здесь ,много полезнои инфы( кстати етого паренька я знаю лично, и скажу тебе что он доволно грамматны спез)

Да, я база данных SQL Server :-)
http://vyaskn.tripod.com/sql_server_adm ... .htm#Step1 --administaiting best practices
http://vyaskn.tripod.com/sql_server_sec ... ctices.htm --------security best practices
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

Юрий, ты уверен, что одна база это вай ту гоу? если так, что я скажу, что это _глубокое_ заблуждение. хотябы с точки зрения масштабируемости продукта и его ТСО ("стоимость на колеса")....

строительство подобной системы не начинается с "tips for dba" ;)
Yuri Dimant
Пользователь
Сообщения: 107
Зарегистрирован: 02 авг 2004, 22:00

db

Сообщение Yuri Dimant »

ок,папа, обьясни мне почемю это заблуждение. И причем здесь типс for dba's. Я дал парню инфо почитать как to implement security ,that all
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: db

Сообщение папа Карло »

Yuri Dimant писал(а):ок,папа, обьясни мне почемю это заблуждение. И причем здесь типс for dba's. Я дал парню инфо почитать как to implement security ,that all
ок. предположим у тебя одна база. и сегодня у тебя 10000 пользователей. сколкьо будет стойть сервер и что в нем будет? теперь. завтра у тебя 20000 пользователей. внимание вопрос. насколько тебе надо увеличить производительность машины чтобы эти 20к пользователей работали с тойже производительностью что и первые 10к? когда все посчитаешь, посомтри тоже самое для 50 и 100к пользователей.

теперь про "типс"... я сказал это, чтобы подчеркнуть, что не на то делаются акценты при подходе к проектированию подобной системы. секурити в таких системах бизнесс логика делает обычно. данные и работу надо распределять между узлами... иначе стоимость системы растет.
Аватара пользователя
Leo Gan
Маньяк
Сообщения: 1764
Зарегистрирован: 29 апр 2005, 16:55
Откуда: где-то рядом с жёлтым карликом
Контактная информация:

Сообщение Leo Gan »

папа Карло писал(а):зависит от требований всегда. и дизайн и имплементация.
Конечно,
а иначе разговор ни о чем получается.

Иначе все похоже на дилентантизм. У новичков всегда так, попробовал что-то одно, получилось. Давай так всЁ буду делать! Ан не получится хорошо.
Ответить