2009-12-12 3 views
1

Например, у меня есть большой набор бюллетеней, которые организованы в виде дерева (дерева категорий). Все категории включительно. Поэтому, если я просматриваю предметы в категории A, я также вижу все элементы в подкатегориях этой категории A. И если я смотрю у корня, я вижу все бюллетени.Распределение древовидных структур

Я хочу достичь горизонтальной масштабируемости здесь, из-за большого размера набора.

Единственный способ, который я знаю, так называемый разброс. Scatter-gather означает, что я отправляю запрос на всех узлах (или подмножестве всех узлов, если знаю, где данные лежат точно), и после ответа узлов данных я собираю результат. Проблема с этим методом заключается в том, что я не могу выполнить подкачку на узлах данных. И это приводит к большому трафику в сети, поскольку сортировка и подкачка должны выполняться на узле координатора (узел, который инициирует сборку рассеяния).

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

ответ

1

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

1

Возможно, вы захотите изучить дерево, смоделированное как вложенный Distributed Hash Tables? Просто идея.

+0

Да, я видел это. DHT очень перспективен в случае сбоя узла. Но это похоже на сборку рассеяния по пропускной способности сети. Кстати, есть ли реализация DHT на вершине терракоты? ;) –

+0

Я не знаю DHT на Terracotta, но вы можете найти интересный проект Terrastore с открытым исходным кодом: http://code.google.com/p/terrastore/ –