2013-03-13 2 views
0

Я хочу, чтобы найти правильный ключ осколка для документа, как это:хороший 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» в качестве составного ключа осколков, чтобы распределить его по работам, которые уже запущены?

Можно ли использовать массив в качестве ключа осколка?

Спасибо за понимание!

ответ

2

Клавиши наложения не могут быть массивами, поскольку индекс на клавише осколка не может быть мультикидным индексом. Я, конечно, думаю, что вы хотите, чтобы «_id» (домен) был частью вашего ключа осколка, и если вы можете найти другой способ обеспечить изолированность запросов, это поможет.

Я немного сомневаюсь, почему вы беспокоитесь о распределении доменных имен равномерно, поскольку доменные имена имеют тенденцию быть довольно случайными, и если вы ожидаете иметь очень большое количество разных доменов, вы должны быть в хорошая фигура. Если по какой-либо причине распределение доменных имен становится проблемой, вы можете запустить MongoDB 2.4.1 и использовать hashed shard key.

+0

Я использую _id с новым хэшированным ключом осколка, и это работает очень хорошо. Мы с этим хорошо распространяем документы 120M. – Fabian

Смежные вопросы