|
|
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
Порекомендуйте возможные реализации такой задачи: есть большая система с одной центральной ДБ (А) и несколькими инстансами ДБ другого типа (B) для накопления и кэширования данных. Сейчас количество баз типа B может быть до 50 и все работает сбалансированно. Следующая версия должна поддерживать 1000 баз типа B. Поскольку все они ходят в базу A я вижу в этом проблему. Логично было бы поддерживать копии A для нескольких баз типа B. (95% запросов B->A на чтение из пяти таблиц по милиону записей, запросы A->B 100% параллельный вызов процедур). Какие возможны технологии реализации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2007, 16:41 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
я несколько удивлен отсутсвием реакции ?????? - в моем вопросе много букав и никто не в силах дочитать до конца - новичкам форума не отвечают в принципе? - никто никогда не делал репликации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 11:44 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
Ты слишком строг к нам... ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:25 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
PeshaShulcесть большая система Пользователей сколько ? Это и определяет масштаб системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:47 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
PeshaShulcя несколько удивлен отсутсвием реакции Ваш вопрос не дает возможности дать на него короткий и толковый ответ. Коротким был бы "любые", но вряд ли Вы сочтете его в должной мере конструктивным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 13:41 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
пользователей интерактивных не много порядка тысячи но система большая потому что в реальном времени принимает 50М записей в день, а следующая версия должна принимать милиард записей в день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 14:07 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
PeshaShulcа следующая версия должна принимать милиард записей в день. То есть в среднем - 11'500 записей в секунду, в пике - порядка 50'000. Боюсь, системе с "центральной БД" при такой нагрузке придется нелегко даже при коротких записях; это конечно существенно зависит от того, из скольких источников и какими порциями приходят данные, но вполне вероятно, я бы сразу задумался о кардинально распределенной системе. Также цифры не очень бьются с основной операцией "чтение из пяти таблиц по миллиону записей" - маловато будет, получается глубина не более получаса. Суммируя - вообще-то я сомневаюсь, что задачу таких размеров стоит проектировать в форуме. Далее, я весьма сомневаюсь в целесообразности таскания (с копированием) миллиарда записей по маршруту центральная бд (А) - промежуточные полуцентральные бд (А') - оконечные бд (B); имеет смысл сокращать пути, делать сколь возможно полносвязку (хотя это, конечно, зависит от специфики данных). Возможно, будет иметь смысл промежуточный кэш (то есть, грубо говоря, миллиард записей приходит на A, потоки по сто миллионов приходят на десяток A', оттуда их запрашивают B). Далее - в такой системе я бы ожидал других требований - по надежности-бесперебойности-безопасности-итд, что тоже повлияет на архитектуру и технические решения. В общем, не верю я, что сейчас некто ГУРУ коротко и полно раскроет рецепт "как строить подобные системы", тем более сомневаюсь я, что на форуме много людей, не понаслышке знакомых с такой нагрузкой (я, например, к таким не отношусь). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 14:31 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
PeshaShulcпользователей интерактивных не много порядка тысячи Это не большая система. PeshaShulcно система большая потому что в реальном времени принимает 50М записей в день, а следующая версия должна принимать милиард записей в день. 50М записей или реальных событий ? (есть разница) (датчики что-ли) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 14:32 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
softwarerТо есть в среднем - 11'500 записей в секунду, в пике - порядка 50'000. Боюсь, системе с "центральной БД" при такой нагрузке придется нелегко даже при коротких записях; это конечно существенно зависит от того, из скольких источников и какими порциями приходят данные, но вполне вероятно, я бы сразу задумался о кардинально распределенной системе. Также цифры не очень бьются с основной операцией "чтение из пяти таблиц по миллиону записей" - маловато будет, получается глубина не более получаса. Совершенно прав. Система изначально распределенная и гибкая. Позволяет переаспределять нагрузку. Центральная база события не получает вообще. softwarer Суммируя - вообще-то я сомневаюсь, что задачу таких размеров стоит проектировать в форуме. Далее, я весьма сомневаюсь в целесообразности таскания (с копированием) миллиарда записей по маршруту центральная бд (А) - промежуточные полуцентральные бд (А') - оконечные бд (B); имеет смысл сокращать пути, делать сколь возможно полносвязку (хотя это, конечно, зависит от специфики данных). Возможно, будет иметь смысл промежуточный кэш (то есть, грубо говоря, миллиард записей приходит на A, потоки по сто миллионов приходят на десяток A', оттуда их запрашивают B). Далее - в такой системе я бы ожидал других требований - по надежности-бесперебойности-безопасности-итд, что тоже повлияет на архитектуру и технические решения. тут нужно пояснение. в центральную базу все эти события попадают после аггрегации. таким образом получается считанные миллионы. Кроме того есть данные из других источников в терпимых количествах и медленно меняющиеся. Именно их мне и нужно реплицировать, иначе ремоут джойны из тысячи источников положат центральную базу. softwarer В общем, не верю я, что сейчас некто ГУРУ коротко и полно раскроет рецепт "как строить подобные системы", тем более сомневаюсь я, что на форуме много людей, не понаслышке знакомых с такой нагрузкой (я, например, к таким не отношусь). у меня нет опыта построения репликаций тем более в SQL 2005 поэтому пришел за советом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 15:37 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
У нас имеется подобная система, даже более сложная в плане репликации. Возможные проблемы достаточно очевидные - восстановление репликации после сбоев и первоначальная синхронизация данных. Эти вопросы нужно продумывать еще на стадии дизайна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 16:21 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
andsmУ нас имеется подобная система, даже более сложная в плане репликации. Возможные проблемы достаточно очевидные - восстановление репликации после сбоев и первоначальная синхронизация данных. Эти вопросы нужно продумывать еще на стадии дизайна. у вас SQL 2005? используете ли вы встроенные средства или что то еще? почему получаются сбои? работает ли аддтивный апдейт? в случае редактирования репликации как работает мердж? как это работает с транзакциями? как оно реально работает? Может там еще пять сервисПаков нужно ждать пока на это можно будет полагаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 16:32 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
PeshaShulcтут нужно пояснение. в центральную базу все эти события попадают после аггрегации. таким образом получается считанные миллионы. N серверов БД собирают события, агрегируют их и записывают в ЦБД по линкам - ничего сложного для ЦБД эти сервера - просто клиенты PeshaShulc Кроме того есть данные из других источников в терпимых количествах и медленно меняющиеся. Этих прямо подключить к ЦБД как клиенты и ничего не реплицировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 16:35 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
модЭтих прямо подключить к ЦБД как клиенты и ничего не реплицировать. так система сейчас и работает проблема будет когда тысяча баз типа "B" (сейчас 50) одновременно начнут делать джойны с миллионными таблицами ЦДБ. Распределить такие запросы по времени не возможно "by design" значит нужно кэшировать сами данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 16:46 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
>мод >N серверов БД собирают события, агрегируют их и записывают в ЦБД ... Что такое - агрегация? Нельзя ли передать события (события можно представить SQL предложениями INSERT, UPDATE. DELETE ?) в ЦБД для обработки не агрегируя? С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2007, 10:46 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
ВМоисеев>мод >N серверов БД собирают события, агрегируют их и записывают в ЦБД ... Что такое - агрегация? Нельзя ли передать события (события можно представить SQL предложениями INSERT, UPDATE. DELETE ?) в ЦБД для обработки не агрегируя? С уважением, Владимир. Довольно странный вопрос. если мне нужна сумма по каждому типу событий в центральной базе зачем мне тащить все события из всех баз данных приемников на центральную, чтобы посчитать сумму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2007, 16:55 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
или мой вопрос не проходит по профилю данного форума или просто нет опытных репликаторов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2007, 16:57 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
>PeshaShulc >если мне нужна сумма по каждому типу событий в центральной базе ... Извините, но я не знаю Ваших задач. Работаю с информационной системой, где между источником данных и сервером данных располагается сервер приложений. В моей ситуации СП для B получает событие, обрабатывает его и результат записывает в B, делает запрос к B за суммой (например) и пересылает результат СП для A. Тот выполняет свою работу с записью результата в A. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2007, 22:52 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
PeshaShulcДовольно странный вопрос. Не от этого собеседника :) PeshaShulcили мой вопрос не проходит по профилю данного форума или просто нет опытных репликаторов Если Вам нужна репликация именно в MSSQL2005, резонно спрашивать о ней в форуме по MSSQL, isn't it? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 08:37 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
PeshaShulc проблема будет когда тысяча баз типа "B" (сейчас 50) одновременно начнут делать джойны с миллионными таблицами ЦДБ. Надо сделать так, чтобы базы типа "B" только писали в ЦБД, т.е. только сбор данных, а вся работа на ЦБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 10:24 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
softwarerЕсли Вам нужна репликация именно в MSSQL2005, резонно спрашивать о ней в форуме по MSSQL, isn't it? sure но поскольку я нахожусь на стадии выбора средств и уточнения проблемы мне интересно узнать возможные альтернативы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 12:38 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
модНадо сделать так, чтобы базы типа "B" только писали в ЦБД, т.е. только сбор данных, а вся работа на ЦБД. согласен, только для осуществления этого мне нужно реплицировать интенсивно используемые данные из ЦБД поближе к базам типа "В", причем желательно размножить их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 12:46 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
>Уважаемый softwarer >Не от этого собеседника :) У меня также возникают "странные" вопросы - 1000 клиентов генерят 1 миллиард записей в день? И почему собственно необходимо реплицировать записи результата выполнения UPDATE в B ( к примеру) от B к A, а не сам UPDATE ? В аналогичной ситуации использовал циклическую очередь для модифицирующих ( а-ля INSERT, UPDATE, DELETE) SQL предложений на СП(А). Все СП(B) забирали из неё не свои. В чем же моя ошибка? Или Вы просто привыкли подключать клиента непосредственно к базе данных и поэтому сложно получить текст самого модифицирующего предложения, и возможно оно обращается к ХР и имеет параметры. Так в прототипе таких проблем нет в принципе. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 13:51 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
ВМоисеевУ меня также возникают "странные" вопросы Я бы сформулировал иначе. У Вас возникают в основном странные вопросы и странные вопросы возникают в основном у Вас. ВМоисеев- 1000 клиентов генерят 1 миллиард записей в день? Где Вы нашли 1000 клиентов? ВМоисеевИ почему собственно необходимо реплицировать записи результата выполнения UPDATE в B ( к примеру) от B к A, а не сам UPDATE ? По двум причинам. Основная - реплицируя "сам апдейт", особенно легко разрушить синхронность данных (получить разные данные в разных базах). Варианты защиты от этого существуют, но непрактичны. Второстепенная - при типовой нагрузке репликация "самого апдейта" существенно повысит траффик ("сам апдейт" занимает больше места, нежели затронутые им данные). Ну и существует некоторое количество мелких соображений, например, реплицировать blob-данные в виде "сам апдейт" несколько затруднительно. Репликацию "исполняемым текстом" используют в основном на относительно высоком уровне, при репликации вызовов хранимок, которые по идее переворошат кучу данных. Ну и следует просчитывать последствия такого шага. ВМоисеевИли Вы просто привыкли подключать клиента непосредственно к базе данных и поэтому сложно получить текст самого модифицирующего предложения, Вы в очередной раз говорите нечто бредовое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 14:16 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
PeshaShulcмне нужно реплицировать интенсивно используемые данные из ЦБД поближе к базам типа "В", причем желательно размножить их. А зачем ? 1000 юзеров могут работать на одной ЦБД - вопрос железа. Я так понял, что это в основном отчеты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 14:38 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
>Уважаемый softwarer >По двум причинам... Конечно, я не гоняю по сети сериализованное представление текста самого предложения UPDATE. Реально это сериализованный упакованный и шифрованный (4-х байтный индекс функции + параметры). Так что трафик увеличится (?) не на много. Использую GUID в качестве ключа записи и при изменении (UPDATE) передаю список ключей в качестве одного из видов параметров. А получение текста SQL предложений в среде Т-SQL задача не тривиальная. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 15:06 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
ВМоисеевИспользую GUID в качестве ключа записи и при изменении (UPDATE) передаю список ключей в качестве одного из видов параметров. Внимание, вопрос: чем это с практической точки зрения отличается от "передачи результатов выполнения"? ВМоисеевИспользую GUID в качестве ключа записи Ну кто бы сомневался :) ВМоисеевА получение текста SQL предложений в среде Т-SQL задача не тривиальная. А при чем тут среда T-SQL? У Вас разве клиент написан на T-SQL? В своем вышеописанном формате Вы разве берете "текстовый update" и парсите его в свой формат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 15:12 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
модА зачем ? 1000 юзеров могут работать на одной ЦБД - вопрос железа. Я так понял, что это в основном отчеты. половина отчетов, работает на данных из ДБ типа "В". причем они должны джойнить таблицы из ЦБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 15:16 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
уважаемые softwarer и ВМоисеев пожалуйста откройте отдельную тему для вашей дискуссии, а ВМоисеев попробуйте понять суть проблемы прежде чем давать рекомендации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 15:24 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
PeshaShulcно поскольку я нахожусь на стадии выбора средств и уточнения проблемы мне интересно узнать возможные альтернативы Альтернативы... ну как сказать. Миллион записей в сутки на полсотни серверов несколько лет назад спокойно таскала моя самописная репликация; из этого я делаю вывод, что по сегодняшним меркам любая нормально написанная софтина с этим справится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 15:28 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
2 PeshaShulc MS MQ как транспорт не рассматривали? Микрософт утверждает, что доставка гарантирована и надежность тем самым обеспечена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 17:38 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
>PeshaShulc >... а ВМоисеев попробуйте понять суть проблемы ... Стараюсь по мере сил. Строю многоуровневые распределенные системы. В них клиент работает с СП, и в принципе не подключается (connect) к серверу данных. Вот Вы уточняете постановку задачи (меня не очень интересует такое решение - только репликация на уровне серверов баз данных - а-ля: мгновеный снимок, транзакционный или слияние). Хочу примерить "одеяльце" к прототипу. >половина отчетов, работает на данных из ДБ типа "В". причем они должны джойнить таблицы из ЦБД. Я не знаю объемов данных в ДБ типа "В" необходимых для построения какого-то конкретного отчета. Но если их объем значительно меньше объема таблиц из ЦБД, то в среде прототипа можно поступить и так - СП(B) запрашивает построение необходимой выборки, сериализует и упаковывает её и передает результат СП(A). Тот строит временные таблицы, "заливает" переданные данные и в среде сервера данных A строит отчет. В каком формате отчет? Вам виднее. В любом случае СП(А) сериализует и упаковывает результат и передает его СП(В). Тот клиенту. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 21:07 |
|
||
|
Большая распределенная система
|
|||
|---|---|---|---|
|
#18+
Вот, проходил тут мимо не смог удержаться от комментария. =|:^) Приходилось серъезно заниматься проблемами репликации в прошлой жизни. Все зависит конечно от характера данных, нагрузки, потоков по разным направлениям. Идеальных решений репликации не существует, везде есть свои +-. В этой ситуации мне кажется наиболее целесообразно сделать несколько копий ЦБД(тип А), поставить их на разные сервера неподалеку друг от друга на хорошие каналы(чтоб их никто фильмами не забивал, трафика будет много), и реплицировать с помощью репликации транзакций (во многих СУБД такой тип имеется). Этот тип транзакций гарантирует Вам идентичность баз в любой момент времени. Это по сути небольшой кластер. Далее, эти сервера ЦБД должны коммутироваться по отдельным каналам, чтобы была польза от того что сделали несколько копий. Базы данных типа В реплицируются с одной из ЦБД с помощью репликации слияния(merge). На этот тип репликации целесообразно будет наложить фильтр, если конечно получится. Это уменьшит нагрузку между БД типа A и B. Репликация A<->A работает постоянно. Репликация A<->B работает по расписанию (масштабируете по нагрузке) Недостаток системы - надо аккуратно строить расписание, и посторение отчетов будет возможно с небольшим опозданием актуальности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2007, 20:48 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1544295]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 373ms |

| 0 / 0 |
