Хороший ключ шарда 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 и использовать хешированный ключ шарда.

Другие вопросы по тегам