Распределение данных в распределенных базах данных - PullRequest
4 голосов
/ 08 ноября 2010

Как оптимизировать распределение данных в распределенной базе данных?

Существуют ли программные продукты для решения этой проблемы?

Например:

Существует несколько подключенных серверов для распределенной базы данных. Каждый сервер одновременно является клиентом этой базы данных.

В базе данных много таблиц.

У нас есть статистика запросов от каждого клиента к конкретной таблице.

Существует определенная цена хранения данных для каждого сервера. Существует определенная цена перевода, известная для каждой пары сервера и клиента.

Цель : Распределить все таблицы (или части таблиц) на серверах наилучшим образом.

Для решения этой проблемы мы можем применять различные эвристические алгоритмы: генетические алгоритмы, стратегии эволюции, муравьиные алгоритмы и т. Д.

Но я не смог найти никаких готовых программных инструментов, которые бы реализовали эти алгоритмы.

Существуют ли инструменты для решения этой проблемы для распределенных баз данных (Oracle или другие)?

Кто-нибудь заботится об этом?

А может, у кого-нибудь есть примеров систем со статистикой запросов с распределенной базой данных, которые были оптимизированы таким образом?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 12 апреля 2011

Я думаю, что гораздо проще просто сохранить данные в централизованной базе данных и настроить кэш для различных мест.Поскольку разные местоположения вряд ли могут находиться в одной и той же сетке, конфигурация кэша должна представлять собой синхронный кэш, поскольку в решении с асинхронным кэшем порядок обновлений в базе данных может не соответствовать порядку, в котором были применены обновления.Кэш уменьшит объем сетевого трафика запросов и улучшит производительность для удаленных местоположений по сравнению с тем, когда им следует обращаться к базе данных напрямую.Возможно, стоит изучить вариант Oracle In-Memory Cache Database.Работает для баз данных 10.2.0.4 и выше, используя версию 11.2.1.8 того, что раньше называлось TimesTen.Отличный вариант.Алгоритмы, о которых вы просили, являются эффективным алгоритмом кеширования.Убедитесь, что часто используемые данные близки к потребителю, по лучшей цене.Если вы можете тратить больше памяти, больше данных умещается. LRU позаботится об удалении из кеша реже используемых данных.

0 голосов
/ 08 мая 2013

Примером распределенной базы данных, которая решает эту проблему, является Clustrix, которая является единственной базой данных, которая имеет независимое распределение индекса. Clustrix - это база данных, созданная с нуля и являющаяся распределенной заменой MySQL.

Подробнее о , как Clustrix осуществляет распределение данных и модель распределенной оценки

0 голосов
/ 18 января 2011

Я искал что-то похожее, но печальная правда в том, что не существует готовых инструментов для проведения такого анализа в отношении баз данных.Тем не менее, вы можете найти много информации о различных исследовательских проектах, университетских газетах и ​​так далее.

В качестве альтернативы это может быть смоделировано с использованием готовых математических инструментов для оптимизации локализации / корреляции данных для конкретных клиентов.

...