2015-05-26 3 views
0

Я новичок в «couchbase server». Я ищу, чтобы хранить 10 имен авторов для документа couchbase один за другим. Кто-то пожалуйста, помогите мне ли эта структура, как единый документ «автор» и несколько значенийХранить несколько авторов в базе данных couchbase

{ id : 1, name : Auther 1}, { id : 2, name : Author 2}

ИЛИ магазин Автор 1 к документу и автор 2 к другому документу.

Если да, то как я могу автоматически увеличивать id до команды «Вставить».

ответ

0

вы можете хранить все авторы в одном документе

{ doctype : "Authors", 
AuthorNames:[ 
    { 
    id: 1, 
    Name : "author1" 
     } 
    { 
    id: 2, 
    Name : "author2" 
    } 
    so on 
    ] 

Если вы хотите увеличить ID, один должен ввести одно имя автора в то время, в новом документе, но идентификатор будет случайным образом и его не будет в порядке возрастания.

0

В Couchbase подумайте больше о том, как ваше приложение будет использовать данные больше, чем то, как вы хотите его сохранить. Например, будет ли ваше приложение получать все 10 авторов все время? Если это так, то один документ может оказаться полезным. Возможно, вашему приложению нужно только читать/писать одного из авторов за раз. Тогда вы можете захотеть поместить каждого по своему усмотрению, но иметь шаблон ключевого объекта, который делает его таким, чтобы вы могли быстро получить объект. Объекты, которые используются часто, хранятся в управляемом кеше, другие объекты, которые не используются часто, могут выпадать из управляемого кеша ... и это нормально.

Другим фактором является то, что ваш коэффициент чтения относится к данным.

Как я уже сказал, это зависит от того, как ваше приложение будет читать и записывать ваши данные. Используйте это как руководство для того, как ваши данные должны быть сохранены.

Один документ JSON довольно прямолинейный. Более продвинутый дизайн схемы, где каждый автор находится в своем собственном документе, и вы обращаетесь к ним через ключ объекта, может быть немного сложнее, но в конечном счете быстрее и более масштабируемым в зависимости от того, что я уже указывал. Я выложу примерную схему и некоторые возможности.

Для авторов, я мог бы создать каждый автор JSON документ с помощью ключа объекта, как это:

авторов :: ID

Где ID это значение я храню в специальном объекте инкрементора, что я буду под названием авторы :: инкрементора. Подумайте об этом объекте как о ключевой паре значений, в которой содержится только целое число, которое является верхней границей массива. Couchbase SDKs включают специальную функцию для увеличения только такого целочисленного объекта. При этом мое приложение может быстро скомпоновать этот объектный ключ. Если я хочу пойти после 5-го автора, я читаю ключ объекта для «authors :: 5». Если мне нужно получить 10, я делаю параллельную функцию BulkGet и получаю авторов :: 1 через авторов :: 10. Если я хочу получить всех авторов, я получаю объект incrementer и получаю это целое число, а затем до параллельного массива get. Таким образом, я могу получить их в порядке или в любом порядке, в котором я чувствую себя, и я обращаюсь к ним с помощью объектного ключа, который очень быстро работает в Couchbase.

Все это, как я уже сказал, я мог бы использовать представление для запроса этих данных или предстоящего «SQL for Documents» в Couchbase 4.0, или я могу смешивать и сопоставлять, когда я запрашиваю и когда получаю объекты по их ключу. Доступ к ключам будет ВСЕГДА быть быстрее. Разница заключается в том, чтобы задать вопрос, а затем получить объект и просто узнать ответ и получить его немедленно.

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