Техники моделирования Couchbase - PullRequest
0 голосов
/ 23 января 2019

Я провожу некоторые исследования для своей команды, пытаясь понять, что такое диван.Прямо сейчас я смотрю на практики моделирования в couchbase.

Я нашел эту статью, написанную в августе 2016 года, в которой говорится о моделировании couchbase .

Он предлагает вместо одного документа

key : hernandez94
{
        "username" : "hernandez94",
        "firstName" : "Jennifer",
        "middleName" : "Maria",
        "lastName" : "Hernandez",
        "addresses" : [
                 { "type" : "home", "addr1" : "1929 Crisanto Ave", "address" : "Apt 123", "addr3" : "c/o  J. Hernandez", "city" : "Mountain View", "state" : "CA", "country" : "USA", "pcode" : "94040" },
                 { "type" : "work", "addr1" : "2700 W El Camino Real", "addr2" : "Suite #123", "city" : "Mountain View", "state" : "CA", "country" : "USA", "pcode" : "94040" }
        ],
        "createdate" : “2016-08-01 15:03:40”,
        "lastlogin": "2016-08-01 17:03:40",
        "pword": "app-hashed-password",
        "loc": "IP or fqdn",
        "enabled" : true,
        "sec-questions" : [
                 { "question1" : "Security question 1 goes here", "answer" : "Answer to security question 1 goes here" },
                 { "question2" : "Security question 2 goes here", "answer" : "Answer to security question 2 goes here" },
                 { "question3" : "Security question 3 goes here", "answer" : "Answer to security question 3 goes here" }
        ],
        "doc-type" : "user"
}

разделить его на несколько документов: user-doc

key : hernandez94

{
    "firstName" : "Jennifer",
    "middleName" : "Maria",
    "lastName" : "Hernandez",
    "addresses" : [
        { "type" : "home", "addr1" : "1929 Crisanto Ave", "address" : "Apt 123", "addr3" : "c/o J. Hernandez", "city" : "Mountain View", "state" : "CA", "country" : "USA", "pcode" : "94040" },
        { "type" : "work", "addr1" : "2700 W El Camino Real", "addr2" : "Suite #123", "city" : "Mountain View", "state" : "CA", "country" : "USA", "pcode" : "94040" }
    ]
    "createdate" : "2016-08-01 15:03:40",
    "doc-type" : "user"
}

login-doc

key : login-info::hernandez94

{
        "lastlogin": "2016-08-01 15:03:40",
        "pword": "app-hashed-password",
        "loc": "IP or fqdn",
        "enabled" : true,
        "doc-type" : "login-info",
        "username" : "hernandez94"
}

sec-questions doc

key : sec-questions::hernandez94

{
 "question1" : { "question" : "Security question 1 goes here", "answer" : "Answer to security question 1 goes here" },
    "question2" : { "question" : "Security question 2 goes here", "answer" : "Answer to security question 2 goes here" },
    "question3" : { "question" : "Security question 3 goes here", "answer" : "Answer to security question 3 goes here" },
 "doc-type" : "sec-questions",
 "username" : "hernandez94"
}

Поскольку это более новая технология, лучший способ сделать что-то чаще меняется, остается ли эта стратегия жизнеспособной?Или производительность N1QL на couchbase 5.0 намного лучше, что делает эту технику устаревшей?Должны ли все мои данные (на пользователя) помещаться в один документ или разбиваться на 10 миллионов х (количество вложенных документов)?У меня будет около 10 миллионов пользователей.

Спасибо

1 Ответ

0 голосов
/ 23 января 2019

Не делая измерений или не зная вашего точного шаблона использования, я могу дать только общие советы.

Я предлагаю вам подумать, как вы будете получать доступ к этому пользовательскому документу. Будете ли вы часто получать только центральный документ, или вы будете обычно объединять его с вспомогательными документами и получать все? Если первое доминирует, непременно разделите документ на части и извлеките только то, что вам нужно. Но если последний доминирует, храните все данные в одном документе, избегая затрат на несколько выборок и объединений каждый раз, когда вам нужно получить данные для пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...