База данных Cassandra NOSQL + DNS (индексированная база данных целых доменов в мире) - PullRequest
3 голосов
/ 25 октября 2010

Мне нужно создать индексированную базу данных целых доменов в мире.

.

Пример:

domain1.com ips: 1.1.1.1,2.2.2.2,3.3.3.3 

domain2.com ips: 1.1.1.1,4.4.4.4

требования:

  1. быстрые вставки

  2. быстрые "выборки"

  3. индекс по ip - нужен быстрый "выбор" для всех доменов по IP: 1.1.1.1.

.

Я построил его в Berkley-DB, иэто выглядит нормально: (обратите внимание на аннотацию «MANY_TO_MANY»)

.

@ Entity

открытый статический класс DomainInfo {

  @PrimaryKey

  String domain;



  @SecondaryKey(relate=MANY_TO_MANY) 

  Set<String> IP = new HashSet<String>();

}

.

Могу ли я построить что-то подобное в Кассандре?

Спасибо большое !!!

.

Ответы [ 2 ]

2 голосов
/ 25 октября 2010

Да, это возможно. Вы получите быстрые вставки бесплатно с помощью Cassandra. Быстро "выбирает"? Пока вы создаете соответствующие семейства столбцов с разумным индексом, у вас будет быстрое «выбор».

Индекс по ips. Хорошо, просто создайте второе семейство столбцов для этого индекса. Или дождитесь выхода новой версии 0.7 (rc скоро выйдет, бета доступны.) И используйте встроенную поддержку для вторичного индекса.

1 голос
/ 28 октября 2010

Вы можете построить модель поиска на этих двух семействах столбцов в качестве примера:

DomainLookup = { 
  'domain1.com' : {
    'ips' : '1.1.1.1,2.2.2.2,3.3.3.3'
  } 
  'domain2.com' : {
    'ips' : '1.1.1.1,4.4.4.4'
  }
}

ReverseLookup = {
  '1.1.1.1' : {
    'domains' : 'domain1.com,domain2.com
  }
  '2.2.2.2' : {
    'domains' : 'domain1.com'
  }
  '3.3.3.3' : {
    'domains' : 'domain1.com'
  }
  '4.4.4.4' : {
    'domains' : 'domain2.com'
  }
}

Этот пример, вероятно, не идеален для вашего случая. Но помните, что Кассандра оптимизирована для записи. Таким образом, вы можете создать другие индексы, наиболее подходящие для вашего сценария запроса. Кроме того, Cassandra принимает полностью распределенный дизайн Dynamo, который облегчает масштабирование. Это самостоятельное управление, означающее, что вы можете добавить новую машину в облако Cassandra, и она автоматически уравновесит хранилище и нагрузку. Одна вещь, на которую вам нужно обратить внимание, это выбрать произвольное или сохраняющее порядок разбиение.

...