Хороший ключ шарда mongodb для "доменного" документа
Я хочу найти правильный ключ шарда для такого документа:
{
"_id": "yahoo.com",
"c": {
"en": {
"bdy": ",
"cats": [],
"mDesc": "",
"mHEq": {},
"mKeyw": [],
"mNames": {}
}
},
"cLgth": 566,
"cType": "text/html",
"dTime": 1224,
"jobsDone": [
"rawdataload",
"hrefanalyze",
"metatagsanalyze",
"keywordanalyze",
"categoryfinder"
],
"langs": [
"en", "de"
],
"publishedOn": {
"sims": 1362752738996
},
"tld": "com",
}
Мои пользовательские запросы в основном получают домен по _id из Монго. Некоторые из них используют язык домена. Внутренние запросы запускают различные виды заданий "jobsDone". На основании этой информации выбираются разные диапазоны документов.
Поэтому я подумал о том, чтобы просто использовать "_id", который сопоставляется с доменным именем, поскольку оно имеет очень высокую мощность. Имеет ли смысл использовать MD5-хэш доменного имени, чтобы распределить его более равномерно?
Я не так о "Запрос изоляции". Поскольку большинство пользовательских запросов будут просто читать непосредственно для _id, я думаю, это нормально. Внутренние запросы заданий могут выполняться дольше (разбрасывать / собирать), так как пользователь их не видит, но я подумал, что для оптимизации этого я добавляю поле jobsDone в качестве составного ключа шарда, чтобы распределить его по уже выполненным заданиям?
Можно ли использовать массив в качестве ключа шарда?
Спасибо за все идеи!
1 ответ
Ключи Shard не могут быть массивами, так как индекс ключа Shard не может быть индексом нескольких ключей. Я, конечно, думаю, что вы захотите, чтобы "_id" (домен) был частью вашего ключа шарда, и если вы сможете найти другой способ обеспечить изоляцию запроса, то это поможет.
Я немного сомневаюсь, почему вы беспокоитесь о равномерном распределении доменных имен, поскольку доменные имена имеют тенденцию быть довольно случайными, и если вы ожидаете иметь очень большое количество разных доменов, вы должны быть в хорошей форме. Если по какой-либо причине распределение доменных имен становится проблемой, вы можете запустить MongoDB 2.4.1 и использовать хешированный ключ шарда.