|
|
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
Добрый всем день. Я сейчас разрабатываю структуры хранилища данных под SQL Server 2005. Планируется очень большая нагрузка до 3.000 транзакций с сек. Или до 30.000 батчей в секунду, если дальше разложить на логические операции. Запросы не тяжелые, но очень много (работа с точечными записями и не большими наборами). Размер базы огромен ~ 1-10TB (VLDB). Это полностью интерактивный web-проект. Из-за чего решать вопрос отчетными "Off-Line" серверами нельзя, данные должны быть актуальными всегда с минимальной задержкой (1/10 - запись/чтение). Планирую использовать распределенную базу данных с несколькими серверами. Возможно что то на подобии тиражирования (аппаратное теневое копирование, мироринг), для горизонтального масштабирования мощности хранилища. Но есть опасения в стабильности такой системы. Самый простой, но дорогой и топорный вариант - купить мега сервер (с кучей CPU), но я оставляю это на последний случай. Можете что либо порекомендовать по этому поводу? Или у кого то уже были случаи реализации подобных проектов? С какой стороны лучше зайти, что бы не промахнутся? Заранее спасибо за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 23:39 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
> Можете что либо порекомендовать по этому поводу? Естественно. 1. Сменить СУБД. 2. Сменить платформу. 3. Сменить среду разработки. 4. Научиться на русском языке формулировать задачу. 3000 rps для пиковой нагрузки - детская цифирь. Для средней - приличная. 5. Нанять консультанта, который специфицирует для Вас аппаратную часть, включая топологию, для заданных характеристик. 6. Нанять консультанта, который выберет способ размещения программно-аппаратного комплекса с учетом вышеперечисленных требований и стоимостных рамок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 23:59 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
MSSQL2005 BOL: Federated Database Servers ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 10:29 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
Вребята, который раз убеждаюсь, что на этом форуме никто ничего толком ответить не может. Просто даже создавать топ не охото в следующий раз. Если есть, что сказать, то говорите по существу. А так зачем этоа грязь? Все принципиальные приемы к данному подходу мне известны. Интересует каковы особенности следует учесть при проектировании, что бы получить максимум масштабируемости, какие пути возможны, но не желательны из-за проблем. Простой пример - завязываться на репликацию данных при синхронизации больших объемов, есть самоубийство, из-за вытекающих проблем поддержки и т.д. Я говорю о концептуальном подходе. to guest_20040621 как всегда отличился. И заметь, ни одного слова о структуре хранилища, одни слова о платформе и спецификации оборудования. Это же все вытекающее из структуры на этапах проектирования и прототипирования. Нет слов, одни выражения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 10:58 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
Ну зря Вы так ругаетесь. Хотя и guest_20040621 мало чего полезного сказал, но все же можно выципить полезную инфу. 1. Думаю, что Оракл больше бы подошел для решения этой задачи 2. Юникс тоже было бы получше 3. Я не знаю на чем Вы разрабатываете , поэтому ничего не могу сказать 4. 3000 транз./сек. не так много. Не сказано главное: -Железо -Кол-во Пользователей, которым нужна инфа на чтение -частота чтения -Кол-во информации, нужной для оперативного получения -Кол-во пишуших процессов -Не понятна какая приемлима задержка м/у писать и читать 5.Не зная, что делает Система (наверняка, она не только пишет и читает из одной/2ух таблиц) трудно дать советы. 6.Не зная, что делает Система (наверняка, она не только пишет и читает из одной/2ух таблиц) трудно дать советы. Общие советы: -Можно попробовать сделать кластер с одним хранилищем и двумя серверами, один для чтения, другой для записи. -Если возможна задержка м/у записью и чтением относительно большое (несколько минут), то реплицировать данные с одного сервера (пишущего) на другой (читающий) раз в Н минут -Распаралелить потоки на запись, если такое возможно -Если возможно, то агрегировать данные после записи для чтения -Если возможно, то агрегировать данные перед записью в БД -Партиционирование ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 12:00 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
to bas. Количество пользовательских запросов, как я и говорил 3.000. На уровне базы все это раскладывается до 30.000 батчей. Задержка между чтением и записью минимальна, секунды. Железо хорошее, деньги есть. Количество информации для получения небольшое, но невозможно предсказать ее распределение по базе. Разработка C# + SQL Server 2005 Соотношение записи к чтению 1/10 Основная концепия системы - добавили объект, он сразу же учавствует в выборках наборов данных (+ сортировка, пейджинг и т.д.). Думаю над возможностью логического разделения контента на разные сервера, для обеспечения масштабируемости. Но возникают проблемы целостности, так как данные могут быть перекрестно связанными друг с другом (так сказать логические связи объектов). Маячит супер сервер, с дополнительными серверами, реалезующими только чтение данных, дублируемое зеркалированием при помощи SQL Server 2005. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 12:40 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
> guest_20040621 мало чего полезного сказал Я ответил на вопрос исчерпывающе полно. Прочтите свое сообщение: Вы сказали вполовину меньше, но при этом значительно длиннее. А Вы, Алексей, подумайте вот о чем: 10 Тб - это достаточно серьезный размер базы данных для того, чтобы проектированием занимались специалисты с соответствующей подготовкой. Это раз. Вы пишете некую софтинку, с помощью которой собираетесь зарабатывать деньги и спроектировать эту софтинку хотите на халяву. Это не курсовик, который можно списать. Это два. Продолжать или достаточно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 13:29 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
to guest_20040621 - респект, ничего не скажешь. Вы ничего не ответили! И не юлите, делая важный вид. Софтинка не на коленке. Работает группа разработчиков и проектирвщиков. Меня конкретно интересовал опыт народа по выбору СТРАТЕГИИ распределенного хранения информации, для горизонтального увеличения мощности. Если нечего сказать - молчите. Что тут еще добавить? Нечего. п.с. На мыло, от нормального собеседника, уже получил информацию о реалезации большой распределенной системе при помощи репликации данных. Но так как с репликацией много работал - завязываться не хочу, много проблем с обслуживанием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 13:42 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
> Вы ничего не ответили! Вы читать-то умеете? Русский язык для Вас родной? Часом, не кандидат наук? > И не юлите Дружище, Вы напрасно приняли дружелюбный тон за юление. Абсолютно напрасно. Видимо, мне нужно было выражаться более адекватно? > делая важный вид. У меня всегда такой вид. Ничего не поделаешь. Сие от меня не зависит. > Софтинка не на коленке. Работает группа разработчиков и проектирвщиков. Судя по Вашим вопросом, группа состоит исключительно из студентов кулинарного техникума. > Меня конкретно интересовал опыт народа по выбору СТРАТЕГИИ > распределенного хранения информации, для горизонтального увеличения мощности. Дружище, Вам еще нужно доковылять до вопроса о выборе стратегии и до распределенных баз данных. Пока Ваша задача видится мне гораздо скромнее: нагруженная дисковая подсистема размером >10 Тб + резервирование + бэкап. > Если нечего сказать - молчите. Попрошу воздержаться от указаний, что мне делать. В обмен на то, что я не буду говорить, куда Вам идти. > На мыло, от нормального собеседника Вот и славненько. Вопрос, полагаю, закрыт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 14:36 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
to guest_20040621 как может быть вопрос закрыт, если мы и не начали его обсуждать? Ваши разговоры лежат в совершенно иной плоскости, в отличие от моего вопроса. Не понятно, зачем вы лезите с аппраратной стороны? Это все равно, что чесать левое ухо правой рукой, через голову... > Пока Ваша задача видится мне Только не надо фантазировать на тему, что там видится. Я же четко сказал - распределенное хранилище, с такой то нагрузкой. И не закладываясь изначально на возможность горизонтального масштабирования, вы получите полный зад при увеличении нагрузки, так что не надо тут говорить, что нужно для начала, а что нет. Вы предлагаете совершенно тупой, топорный подход. > Попрошу воздержаться от указаний, что мне делать Я не указываю вам, а рекомендую сделать розумный выбор. Знаете выражение - "на нет и суда нет"? То-то же. Из общения с вами guest_20040621, я вообще ничего вынести не могу, так что хватит заниматься демагогией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 16:05 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
aleksey_fomchenko Количество пользовательских запросов, как я и говорил 3.000. На уровне базы все это раскладывается до 30.000 батчей. Вы говорили про транзакции, запросы и транзакции разные вещи, так что в итоге?? aleksey_fomchenko Задержка между чтением и записью минимальна, секунды. Так, а тогда как часто запись происходит? Кто изменяет данные и каким образом?? aleksey_fomchenko Железо хорошее, деньги есть. "хорошее" - это сервер какого производителя?? aleksey_fomchenko Количество информации для получения небольшое, но невозможно предсказать ее распределение по базе. Индексы правильно стройти aleksey_fomchenko Разработка C# + SQL Server 2005 + Windows Не самая маштабируемая платформа aleksey_fomchenko Соотношение записи к чтению 1/10 Энто как? До конца не поняет процесс изменения данных в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 18:08 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
ДАнные часто одни и те же требуются?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 18:10 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
> Из общения с вами guest_20040621, я вообще ничего вынести не могу Жаль. Обычный совет: больше читайте. > Не понятно, зачем вы лезите с аппраратной стороны? Потому, дружище, что этого задача требует. Вы это поймете при первом же нагрузочном тестировании с имитацией отказа. > Я же четко сказал - распределенное хранилище, с такой то нагрузкой. Да мне пох... ой... в смысле наплевать, дружище, что Вы сказали. Задача, о которой Вы рассказали, имеет миллион решений. Вы выбрали решение, которое физически реализовать не сможете. Даже если увеличите группу студентов кулинарного техникума в десять раз. Доступно излагаю? Нонсенс: на форточках строить систему высокой готовности с распределенной БД и балансированием нагрузки. Как задолбали дилетанты... Ну хоть что-нибудь почитайте перед тем, как полную фигню писать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 20:46 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
to bas нагрузка со стороны Application 3.000 релоадов web-страниц. на стороне SQL Server все это раскладывается в 30.000 транзакций. Соотношение записи к чтению 1/10 Запись делится 50/50 вставка/обновление Железо планирую от IBM, G3 сервера (x450), хорошая вертикальная масштабируемость. Имел опыт работы с ними - строил Failover кластер из 2-х серверов по 8 CPU в каждом, с возможностью еще наращивать. + SAN от HDS или EMC с хороше проработаной конфигурацией. С индексами проблем не будет, опыт есть большой. Выбор платформы сделан руководством и до меня (C# + SQL Server 2005 + Windows), так что это не вопрос. Хотя проектировать я могу и под nix системы, но не вижу принципиальных преград в построении большой системы на Win. Процес изменения данных в базе таков: Имеем портал развлекательного характера, в котором добовляются новости и подобного рода информация. Пользователи эти новости (объекты) могут коментировать + работать с ними на основе так называемых "Тегов", привязывать последнии к объектам, производить по ним поиск. 5% всех запросов к хранилищу, это вставка объектов + 5% это обновление счетчиков тех же объектов. Все остальное, это выборка точечных объектов (70% запросов) + выбор наборов данных (20% запросов). Что бы погасить нагрузку на SQL Server - разработывается кеш объектов на Application, но он сможет гасить только запросы на точечные объекты, которые простые, но их очень много (70% от всех запросов). (2/3 планируем гасить кешем из запросов на точечный объект). В итоге остается выборка наборов, которую не за кешируеш. Из за этого и планирую горизонтыльно масштабировать нагрузку. Данные часто одни и те же требуются, так что кеширование данных будет: 1. со стороны SAN контроллеров (4GB на контроллер (разные контроллеры под разрые типы данных (текст, image ...))) 2. со стороны SQL Server (16GB и более) 3. со стороны Application (16GB и более) 80% всех запросов в сутки, это работа с одними и теме же данными, но 20% из них могут быть по любому контенту и все, что есть. Постепенно появляются новые объекты, и фокус данных перемещается на них. Скользащее окно, зависимое от времени построить невозможно. Мощность основных таблиц большая - 1.000.000.000 и более, но основной объем базы дают не они, а текставая и бинарная информация, хранение которой будет выделено. Думаю, что ответил на вопросы, которые задавал bas. Задача осложнена тем, что очень сложно или практически не возможно логически разделить данные, так как совершенно разные по хорактеру объекны могут быть связаны друг с другом связями "многие ко многим". В результате, если не получится раздалить данные, будем тиражировать последнии на "читающие" сервера, которые можно подбрасывать в NLB кластеры как в топку (но будем иметь небольшую задержку в обновлении данных). На архитектуру (с инфраструктурой) хранилища данных я стотрю паралельно с разработкой структуры базы данных, как рекомендует мне опыт (так виднее общая картина в целом). Но никак не в первую очередь железо со всей инфраструктурой, как говорит guest_20040621, а потом база. Это утопия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 11:32 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
Т.е. оснавная нагрузка - это чтение, а не запись, как я понял сначла. Более менее понятно. Ладно, пофантазируем. А можно ли сделать так, что бы все операции изменения агрегировались (ставились в очередь) в одном месте (сервере), а потом из данного места тирражировались на множество БД? Или чтобы каждый веб-сервер писал на все имеющие сервера, но тогда встает вопрос целостности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 12:41 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
Если Вы хотите строить кластер, то все равно надо организовывать работу записи с одного сервера, чтобы не было конкуренции за блоки. Т.е. выделить один сервер для изменения данных и кучу серверов для чтения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 12:51 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
Я так и планирую. Будет 1 точка входа информации (пишущий сервер) и несколько точек выхода (читающие сервера) С очередью думаю не стоит, так как при полном падении одного узлов получим проблемы с дальнейшей пересинхронизацией. С распределенными транзакциями то же думаю не стоит завязываться, увельчится общее время вставки. Попробую использовать зеркалирования при помощи средств SQL Server 2005. Правда будет небольшая задержка в тиражировании данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 13:30 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
aleksey_fomchenkoПопробую использовать зеркалирования при помощи средств SQL Server 2005. Правда будет небольшая задержка в тиражировании данных. Так у вас будет одно хранилище или несколько??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 14:28 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
Если основная нагрузка чтение, то можно вспомнить, что есть sql-сервера - версионники. А количество одновременных подключений неизвестно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 14:30 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
> Но никак не в первую очередь железо со всей инфраструктурой Инфраструктура - это программно-аппаратный комплекс. Весь. Целиком. С правилами, регламентами, конфигами, мероприятиями по обслуживанию и пр. хренью. Никто нигде не сказал, что это просто. Я сказал, что это правильно. Мне, в сущности, пофиг, что Вы там себе напроектировали. Запустите - расскажете про грабли, на которые наступили. P.S. Рад, что в [3195247] Вы по крайней мере часть задачи описали нормальным образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 14:48 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
to bas - так в том то и дело, что данные не получается логически разделить на независимые блоки. Из этого маячит одно центральное хранилище. Думаю, над проблемой тиражирования данных на читающие сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:34 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
Ну, дык, а что тут думать?? В кластер объединяешь и все, вряд ли что-то более быстродействующее придумаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:01 |
|
||
|
Распределенная VLDB
|
|||
|---|---|---|---|
|
#18+
Или хочешь с записывающего сервера зеркалировать на читающие?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:02 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=34015913&tid=1545013]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 459ms |

| 0 / 0 |
