Вопрос по дизайну баз данных и middleware
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- aissp
- Маньяк
- Сообщения: 2710
- Зарегистрирован: 07 ноя 2005, 09:51
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
- Проф. Преображенский
- Графоман
- Сообщения: 20276
- Зарегистрирован: 08 ноя 2006, 11:10
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Мне бы детали сюдаПроф. Преображенский писал(а):С синхронной записью, я понял, нет проблем. А вот подтянуть новую базу можно так.Marmot писал(а):Никогда не слышал про synchronous writes in peer-to-peer environment.Проф. Преображенский писал(а):Пир-2-пир сеть с монитором синхронизации.
Там вроде все аsynchronous...


Devil is in details...
- aissp
- Маньяк
- Сообщения: 2710
- Зарегистрирован: 07 ноя 2005, 09:51
Вообще идеальный вариант коллекционировать в логах очередях не сиквел запросы а странички требующие перезаписи, понятно что скорость поднимается в разы. Опять же для частной бд ето делается (правда не слишком просто) в общем случае - просто не знаю, позволяет оракл и майкрософт работать непосредственно со страницами.
У нас в свое время была проблема с апдейтами, поскольку было много сиквел запросов на вставку удаления (предложения теряли актуальность) а часть сереверов в силу разных причин получали апдейты медленно - раза три в сутки, и получается мы скидываем 30 мегов апдейтов из которых реально 15 сразу идут в помойку, пары инсерт делит. А на каждый инсерт перестраивается индекс. Ето вторая проблема, спланировать базу так чтобы минимизировать обновление индекса, но опять же она частная, ето я так возможные грабли обозначил.
Вобщем извини, без оценки нагрузки, объемов базы данных, ее конкретного типа и превалирующих типов запросов оптимизированное решение как подобрать я не знаю
Однако удачи
У нас в свое время была проблема с апдейтами, поскольку было много сиквел запросов на вставку удаления (предложения теряли актуальность) а часть сереверов в силу разных причин получали апдейты медленно - раза три в сутки, и получается мы скидываем 30 мегов апдейтов из которых реально 15 сразу идут в помойку, пары инсерт делит. А на каждый инсерт перестраивается индекс. Ето вторая проблема, спланировать базу так чтобы минимизировать обновление индекса, но опять же она частная, ето я так возможные грабли обозначил.
Вобщем извини, без оценки нагрузки, объемов базы данных, ее конкретного типа и превалирующих типов запросов оптимизированное решение как подобрать я не знаю

Однако удачи

- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Да меня пока интересуют основные направления движения, вот, например, двойная очередь это уже хороший первый кандидат.aissp писал(а):Вообще идеальный вариант коллекционировать в логах очередях не сиквел запросы а странички требующие перезаписи, понятно что скорость поднимается в разы. Опять же для частной бд ето делается (правда не слишком просто) в общем случае - просто не знаю, позволяет оракл и майкрософт работать непосредственно со страницами.
У нас в свое время была проблема с апдейтами, поскольку было много сиквел запросов на вставку удаления (предложения теряли актуальность) а часть сереверов в силу разных причин получали апдейты медленно - раза три в сутки, и получается мы скидываем 30 мегов апдейтов из которых реально 15 сразу идут в помойку, пары инсерт делит. А на каждый инсерт перестраивается индекс. Ето вторая проблема, спланировать базу так чтобы минимизировать обновление индекса, но опять же она частная, ето я так возможные грабли обозначил.
Вобщем извини, без оценки нагрузки, объемов базы данных, ее конкретного типа и превалирующих типов запросов оптимизированное решение как подобрать я не знаю
Однако удачи
Работа со страничками позволаяет только увеличить скорост. Логика проблемы от этого не меняется. На данный момент мне хочется рассмотреть как можно больше возможных алгоритмов.
Я, к тому же, это все еще и горизонтально скейлить буду...

- aissp
- Маньяк
- Сообщения: 2710
- Зарегистрирован: 07 ноя 2005, 09:51
Ну восстанавливайся из бакапа, ето значит что ты одну машину стопишь, копишь лог для нее а базу данных с нее бакапишь. В каждый момент у тебя есть бакап и дельта от бекапа до текущего состояния, ето позволит тебе исключить замедление системы при добавление еще одного сервера.
Еще один способ поднять производительность - разделить базу данных, так что все что на букву а на одном сервере б на другом, тогда каждый бакап будет меньше да и лог тоже.
Сам буду рад услыхать еще способы.
Еще один способ поднять производительность - разделить базу данных, так что все что на букву а на одном сервере б на другом, тогда каждый бакап будет меньше да и лог тоже.
Сам буду рад услыхать еще способы.
- Проф. Преображенский
- Графоман
- Сообщения: 20276
- Зарегистрирован: 08 ноя 2006, 11:10
Без детальной постановки задачи говорить трудно. Хотя процесс можно представить так:Marmot писал(а):Мне бы детали сюдаПроф. Преображенский писал(а):С синхронной записью, я понял, нет проблем. А вот подтянуть новую базу можно так.Marmot писал(а):Никогда не слышал про synchronous writes in peer-to-peer environment.Проф. Преображенский писал(а):Пир-2-пир сеть с монитором синхронизации.
Там вроде все аsynchronous..., общие слова я тоже умею говорить...
Devil is in details...
1. идет синхронная запись.
2. новая база или опоздавшая старая (сбой, перегрузка) выводятся в асинхронный пул. Синхронная запись туда тоже идет.
3. монитор синхронизации выясняет, чего не хватает в базах (как - это другой вопрос). В простейшем случае другая полная база используется как образец.
4. для заполнения рассинхронизированных баз делаются запросы к другим базам.
5. после заполнения пробелов база выводится из асинхронного пула.
Это может быть и не пир2пир. Все можно сделать через монитор синхронизации.
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Ну да, за кого ты меня принимаещьaissp писал(а): Еще один способ поднять производительность - разделить базу данных, так что все что на букву а на одном сервере б на другом, тогда каждый бакап будет меньше да и лог тоже.

То про что я спрашиваю это только одна из partitions(shards) в нашей системе.
В настоящее время каждый shard состоит из двух серваков с master-to-master replication. Но мы уже приближаемся к приделу производительности на чтение для каждой пары.
Поэтому-то и хотим добавить серваков, не теряя synhronous writes.
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
- Marmot
- Графоман
- Сообщения: 39279
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
- Проф. Преображенский
- Графоман
- Сообщения: 20276
- Зарегистрирован: 08 ноя 2006, 11:10
Мда. Если это не просто риалтайм регистрация, то контрольные точки и логи спасут.Marmot писал(а):Низзяяя, это будут out-of-order writes, например UPDATE записи, которая еще не существует...Проф. Преображенский писал(а):1. идет синхронная запись.
2. новая база или опоздавшая старая (сбой, перегрузка) выводятся в асинхронный пул. Синхронная запись туда тоже идет.
- Проф. Преображенский
- Графоман
- Сообщения: 20276
- Зарегистрирован: 08 ноя 2006, 11:10
-
- Пользователь
- Сообщения: 140
- Зарегистрирован: 30 июн 2006, 13:16
А у вас базу какие? Например в оракле есть возможность создания standby сервера с настройкой синхронной записи логов. Когда доставкой логов занимается log writer в этом случае commit происходит только по при успешной записи во все участвующие базы.
Ограничение в том что все standby базы находится в read only режиме.
Также в оракле есть STREAMS. Позволяет это сделать для выбранных объектов.
Есть готовые сервисы для мониторинга транзаций и из синхронной репликации на несколько серверов. Tuxedo вроде как умеет это делать
Ограничение в том что все standby базы находится в read only режиме.
Также в оракле есть STREAMS. Позволяет это сделать для выбранных объектов.
Есть готовые сервисы для мониторинга транзаций и из синхронной репликации на несколько серверов. Tuxedo вроде как умеет это делать