【发布时间】:2011-10-27 16:39:21
【问题描述】:
目前我们正在使用 SQL Server 和 Lucene 的组合来索引一些关于域名的关系数据。我们有一个域表,还有大约 10 个其他各种表,用于记录我们计算和存储的有关域的不同指标的历史记录。例如:
域
- Id BIGINT
- 域 NVARCHAR
- IsTracked BIT
SeoScore
- Id BIGINT
- DomainId BIGINT
- 分数 INT
- 时间戳DATETIME
我们正在尝试将主要区域文件中的所有域包含在我们的数据库中,因此我们最终会查看大约 6 亿条记录,这似乎在 SQL Server 中进行扩展有点麻烦。鉴于我们依赖 Lucene 来执行一些非常高级的查询,Solandra 似乎是一个不错的选择。我很难不考虑用关系数据库术语来考虑我们的数据。
SeoScore 表将映射一对多域(我们每次计算分数时对应一条记录)。我认为,在 Solandra 术语中,实现这一目标的最佳方法是使用两个索引,一个用于 Domain,一个用于 SeoScore。
以下是我们需要实现的查询场景:
每个域的最新指标的“当前快照”(因此是给定域的最新 SeoScore。我假设我们会首先找到所需的域记录,然后运行进一步查询以获取每个指标的最新快照。
自 x 日期时间以来未检查 SeoScores 且 IsTracked=1 的域,因此我们将知道哪些需要重新计算。我们在这里需要某种批处理系统,这样我们就可以“检查”域并对其进行计算,而无需重复工作。
我在这里偏离轨道了吗?在这种情况下,我们基本上将表映射到 solandra 中的单独索引是否正确?
更新
这是我在想的一些 JSON 符号:
Domains : { //Index
domain1.com : { //Document ID
Middle : "domain1", //Field
Extension : "com",
Created : '2011-01-01 01:01:01.000',
ContainsDashes : false,
ContainsNumbers : false,
IsIDNA : false,
},
domain2.com {
...
}
}
SeoScores : { //Index
domain1.com { //Document ID
'2011-02-01 01:01:01.000' : {
SeoScore: 3
},
'2011-01-01 01:01:01.000' : {
SeoScore: -1
}
},
domain2.com {
...
}
}
【问题讨论】:
-
只使用弹性搜索。
标签: lucene solr nosql cassandra solandra