В настоящее время мы используем комбинацию SQL Server и Lucene для индексации некоторых реляционных данных о доменных именах.У нас есть таблица доменов и около 10 других различных таблиц для историй различных показателей, которые мы рассчитываем и храним для доменов.Например:
Домен
- Идентификатор BIGINT
- Домен NVARCHAR
- IsTracked BIT
SeoScore
- Идентификатор BIGINT
- DomainId BIGINT
- Счет INT
- Метка времени DATETIME
Мы пытаемся включить все домены из файлов основных зон в нашу базу данных, поэтому в конечном итоге мы просматриваем около 600 миллионов записей, что в SQL Server будет немного трудоемким для масштабирования.Учитывая нашу уверенность в том, что Lucene будет выполнять довольно сложные запросы, Solandra, похоже, вполне подойдет.Мне трудно не думать о наших данных в терминах реляционных баз данных.
Таблица SeoScore будет отображать один домен на несколько доменов (по одной записи на каждый раз, когда мы рассчитывали счет).Я думаю, что с точки зрения Solandra, лучший способ достичь этого - использовать два индекса, один для домена и один для SeoScore.
Вот сценарии запросов, которые нам нужно выполнить:
«Текущий моментальный снимок» последних показателей для каждого домена (поэтому последний SeoScore для данного домена. Я предполагаю, что сначала мы найдем нужные записи домена, а затем запустим дополнительные запросы, чтобы получитьпоследний снимок каждой метрики в отдельности.
Домены с SeoScores, которые не проверялись с момента x datetime, и имеющие IsTracked = 1, поэтому мы знали бы, какие из них необходимо пересчитать.здесь нужна какая-то система пакетирования, чтобы мы могли «проверять» домены и выполнять вычисления на них без дублирования усилий.
Я не в курсе? Будем ли мы правы в основном при картированиинаши таблицы для разделения индексов в Solandra в этом случае?
ОБНОВЛЕНИЕ
Вот некоторые JSON-записи того, что яnking:
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 {
...
}
}