|
|
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Планируется реализовать сервис для email-маркетинга. В системе существует множество аккаунтов, которые могут содержать несколько пользователей для их управления, а также списки рассылки, маркетинговые кампании, информация о рассылке и т.д. Возникает вопрос как лучше хранить данные об аккаунтах в одной большой базе данных или для каждого аккаунта использовать свою базу данных. Каково ваше мнение? Пробовали вы использовать архитектуру с многими БД? Первоначально я был абсолютно уверен в первом варианте, но сейчас изучая подобные системы моя уверенной несколько поколебалась. Похоже, что по крайне мере некоторые системы использую одну базу данных для аккаунта (по крайней мере для тех, которые содержат много данных). Ниже я попытался привести некоторые плюсы и минусы каждого варианта. Использование одной большой базы данных Плюсы: 1. Нужно поддерживать только одну базу данных. Минусы: 1. Хранение информации об аккаунта в одной базе данные может откывать возможность доступа одного аккаунта к данным другого (данные об аккаунте в принципе независимы друг от друга). 2. Копирование очень большой базы данных может занимать много времени. Использование отдельной базы данных для каждого аккаунта Плюсы: 1. Данные разным аккаунтов изолированы друг от друга. 2. Работа с маленькой базой данных аккаунта выполяется быстро. Минусы: 1. Нужно поддерживать много БД (поддержка большого числа бд кажется настоящим кошмаром). Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 10:08 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
однозначно одна БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 10:48 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
OLEG_2005В системе существует множество аккаунтов Это, конечно же, очень познавательная оценка количества... Начните с то того, что у каждой СУБД есть ограниечение на количество экземпляров сервера, установленных на одной "машине" и ограничение количества БД на одном экземпляре... А то вдруг у вас "множество аккаунтов" мощностью несколько тысяч.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 10:49 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
Nafоднозначно одна БД На самом деле, +1. ТСМинусы: 1. Хранение информации об аккаунта в одной базе данные может откывать возможность доступа одного аккаунта к данным другого (данные об аккаунте в принципе независимы друг от друга). Настройка прав доступа даже на уровне БД - точно меньший "кошмар", чем "Нужно поддерживать много БД (поддержка большого числа бд кажется настоящим кошмаром)." ТС 2. Копирование очень большой базы данных может занимать много времени. Зачем вам копировать всю БД? И оптять эти невнятные "оценки": "много времени". Какой объём БД? Какая будет СУБД? Если с СУБД непонятно - такой вопрос и задавать... Если понятно - в профильный форум по СУБД с внятными объёмами. Там всё и прояснят... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 10:56 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
АнатоЛой, Но ведь можно использовать множество экземпляров БД и даже физические располагать на разных серверах, ведь так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 10:58 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
АнатоЛой, Количество аккаунтов может достигать со временем десятков тысяч, а может и сотен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 11:01 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
АнатоЛой, Планируется использвать MYSQL сервер. Для меня мысль с использованием отдельной БД для аккаунта кажется неожиданной. Цель вопроса на самом деле в том, чтобы попытаться сравнить две архитектуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 11:03 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Количество аккаунтов может достигать со временем десятков тысяч, а может и сотен. Напугал кота сосиской, а ежа голым задом. Пихайте все в одну базу. Пару лет назад держал мультидоменный почтовый сервер порядка 20 доменов, около 2000 почтовых ящиков на каждом плюс где-то по 5000 алиасов на домене плюс всякая мелочь. Что-то около 200 000 записей. Приблизительно 5-10 запросов в секунду, в пиках до 100, тогда подтормаживало, да, но это же почтовик, от него не требуется мгновенной реакции. При средних нагрузках, все запросы -- 0.00х секунд, тот же мускул, на том же серве, где и почтовик. В кэш много не попадало. Почтовому серверу много выхухоленных запросов не надо, да и остальная система выглядит не сложной. Если возьмете нормальный хайэнд серв, поставите его отдельно от почтовых, даже тот же мускуль будет плюя в потолок вам эти сотни тысяч записей разгребать и выдавать нужные. Лучше потратьте время на масштабирование почтовой системы, при рассылке 100+ тысячам пользователей вам потребуются некислые каналы, чтобы доставить почту в разумное время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 12:12 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
Lemegeton, Дело в том, что для каждого акканта нужно хранить не только списки пользователей, сообщения рассылки, но много другой информации (сколько открывались сообщения, кем) и эта количество этих данных будет быстро расти, требуется рассчитывать много параметров. Сотни тысяч аккаунтов, в каждого аккаунте десятки-сотини тысяч подписчиков, статистика по каждой маретинговой компании каждого подписчика. Кажется, базу перекапывать придется очень и очень много, а расчет статистики может быть очень трудоемким. А бэкап такой базы делать не будет проблематично? Если встанет вопрос масшибирования, в каком направлени потом двигаться? Встает вопрос зачем люди извращаются с большим количество баз данных (по одной на аккаунт). На самом деле я изначально склонялся к одной базе, но теперь терзают сомнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 12:47 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
Если кого интересует и кто в ладах с английским, может посмотреть ссылки, что пишут люди по этому поводу: http://stackoverflow.com/questions/128919/extreme-sharding-one-sqlite-database-per-user http://stackoverflow.com/questions/2804452/database-per-application-vs-one-big-database-for-all-applications http://stackoverflow.com/questions/617833/user-authentication-when-using-single-database-per-client http://stackoverflow.com/questions/13348/what-are-the-advantages-of-using-a-single-database-for-each-client ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 12:51 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
В качестве основных аргументов в пользу использования архитектуры с одной БД на аккаунт приводят гибкость масштабирования (например, аккаунты с большим число данных можно хранить на отдельном физическом сервере), высокую надежность (данные одного аккаунта не влияют на данные другого), быстро можно сделать бэкап аккаунта. Честно говоря, для меня такой подход стал в некотором смысле откровением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 12:57 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
при создании аналогичной по функционалу системы я использовал третий вариант: Для 2 компаний, являющихся основными клиентами и имеющими базы консьюмеров по несколько миллионов, я использовал по одной базе на все их бренды. Преимущества в простоте организации кроссбрендовой аналитики (когда консьюмеры участвуют в программах разных брендах одного клиента), возможности актуализации адресных данных их клиентов (по свежим каналам выясняется о смене адреса одного клиента, тогда в следующий раз по другой программе другого бренда он будет участвовать с новым брендом, а не попадет в возвраты) Для всех остальных аккаунтов, меньших размером или разовых, я использовал третью базу, полностью аналогичную первым двум. Преимущества - дешевизна сопровождения одной базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 13:11 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
На мой взгляд, выбор между одной бд или несколькими должен основываться только на одном: необходимости безопасности и изолированности данных (не аккаунтов, а именно данных, всех). Все остальное - масштабирование, поддержка и т.п. задачи вполне решаемые в обоих случаях, и в обоих случаях по масштабированию и поддержке есть свои плюсы и минусы. Если исходя из требований есть необходимость быстро "выдернуть" данные одного из клиентов или полностью отдать кому-либо на сопровождение БД/проект одного из нескольких клиентов, лучше сразу "завязываться" на отдельную БД для каждого такого клиента. Если таких требований по безопасности и изолированности нет, то делайте одну централизованную БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 20:24 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
Роман ДынникНа мой взгляд, выбор между одной бд или несколькими должен основываться только на одном: необходимости безопасности и изолированности данных (не аккаунтов, а именно данных, всех). Все остальное - масштабирование, поддержка и т.п. задачи вполне решаемые в обоих случаях, и в обоих случаях по масштабированию и поддержке есть свои плюсы и минусы. Если исходя из требований есть необходимость быстро "выдернуть" данные одного из клиентов или полностью отдать кому-либо на сопровождение БД/проект одного из нескольких клиентов, лучше сразу "завязываться" на отдельную БД для каждого такого клиента. Если таких требований по безопасности и изолированности нет, то делайте одну централизованную БД. Держать каждый аккаунт в отдельной базе нецелесообразно, но есть аккаунты с большим количеством данных, которые хотелось бы иметь возможность перенести в отдельную БД. Таким образом видимо придется проработать вариант, когда часть аккаунтов содержится в общей базе, а часть может быть перенесена в отдельную БД. Надеюсь, что это не очень сильно усложнит систему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 08:42 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
Роман Дынник, А не будет ли проблемой большое время бэкапа одной большой БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 08:45 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
OLEG_2005Роман Дынник, А не будет ли проблемой большое время бэкапа одной большой БД? OLEG_2005, Вы просто засыпаете нас конкретикой Большая БД - это сколько? В ГБ-ТБ прикидывали? Большое время бэкапа - это сколько? Есть требование - не больше 10 мин/часа/3 часов/ суток? Хоть с СУБД определились, и то слава богу.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 10:37 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
Я не совсем понимаю что вы имеете в виду под аккаунтами? Если это относится к подсистеме безопасности, возможно ее стоит выделить отдельно. OLEG_2005А не будет ли проблемой большое время бэкапа одной большой БД? Все зависит от выбранной СУБД. С промышленными СУБД можно построить несколько стратегий резервирования, например: -полный бекап -полный + дифференцированные мелкие -полный + дифференцированные мелкие + бекап транзакшин лога Кроме того резервирование в нормальных СУБД - это фоновый процесс, особо не влияющий на работу с БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 10:42 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
p/s/ email-маркетинг - это нынче так СПАМ называется?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 10:46 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
Роман Дынник, Как я понимаю разница между спамом и email-маркетингом огромная. Спам приходит к вам вопреки вашего желания и вы не можете от него отписаться. Здесь же для того, чтобы вам приходили сообщения вы должны дать согласие и в любой момент можете отписаться. Чувствуете разницу. Если кто-нибудь попытается отправлять спам с помощью такой системы (придет жалоба от пользователя, провайдера), его просто заблокируют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 15:03 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
АнатоЛой, Может быть подскажите, сколько примерно будет выполняться резервное копирование базы данных несколько десятков гигибайт, во время работы сайта? Порядок цифр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 15:05 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
Роман Дынник, Под аккаунтов понимаю следующее: информация связанная с тем, кто зарегистрировался в сервисе для создания списков и рассылки своих кампаний (с каждый аккаунтом может быть связано несколько пользователей, которые получают доступ к этой информации. Иными словами эта сущность, которой предоставляются услуги для email-маркетинга и которая оплачивает эти услуги. Здесь хранятся списки рассылки, тексты кампаний, статистика по компания и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 15:13 |
|
||
|
одна большая база данных или много маленьких
|
|||
|---|---|---|---|
|
#18+
OLEG_2005АнатоЛой, Может быть подскажите, сколько примерно будет выполняться резервное копирование базы данных несколько десятков гигибайт, во время работы сайта? Порядок цифр. Такие вопросы лучше сразу на форум MySQL - Вы же уже определиль с БД :). Кроме того, многое зависит от железа и места, куда Вы собираетесь складывать бекапы (сеть, тип веника, лента). У меня, например на СУБД Informix ночью 32 ГБ полный архив проходит за... час :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 10:51 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36749972&tid=1542614]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
190ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 563ms |

| 0 / 0 |
