Cassandra NOSQL + DNS数据库(全球所有域名的索引数据库)

时间:2010-10-25 09:45:54

标签: nosql cassandra

我需要建立一个全球域名的索引数据库。

示例:

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。

  4. 我在Berkley-DB中构建它,看起来很好: (请注意“MANY_TO_MANY”注释)

      

    @Entity

         

    公共静态类DomainInfo   {

      @PrimaryKey
    
      String domain;
    
    
    
      @SecondaryKey(relate=MANY_TO_MANY) 
    
      Set<String> IP = new HashSet<String>();
    
         

    }

    我可以在Cassandra中构建类似的东西吗?

    非常感谢!!!

2 个答案:

答案 0 :(得分:2)

是的,它可能。您将使用Cassandra免费快速插入。 快速“选择”?只要您使用合理的索引构造适当的列族,就可以快速“选择”。

ips索引。好的,只需为该索引创建第二列族。或者等待即将到来的0.7版本(rc即将发布,betas可用。)并使用内置支持二级索引。

答案 1 :(得分:1)

您可以使用这两个列系列构建查找模型作为示例:

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已针对写入进行了优化。因此,您可以创建最适合您的查询方案的其他索引。此外,Cassandra采用Dynamo的完全分布式设计,使其更容易扩展。它是自我管理的,这意味着您可以向Cassandra云添加新计算机,它将自动平衡存储和负载。您需要注意的一件事是选择随机或订单保留分区。