2016-11-12 5 views
2

Я новичок в RethinkDb и NoSQLRethinkDB структура данных

1: то, что я узнал, является документ базы дб приводится данные, что когда-либо данные поступают вы просто положить его в БД. Это главное преимущество. Вам не нужно построенной схемы или структуры данных, данных делает его собственную структуру

например, первоначально данные следующим образом

{ 
name: 
address: 
phone: 
} 

позже

{ 
name: 
{ 
    firstname: 
    lastname: 
} 
address: 
    { 
    address1: 
    address2: 
    } 
phone: 
    { 
    phone1: 
    phone2: 
    } 
} 

Оба данных в документ, вы должны настроить приложение к нему.

Правильно ли я это понимаю. Правильно ли этот подход?

2: Я делаю приложение для управления больницей. Я хочу знать, сколько глубоко я могу создать документ

например

{ 
id: 
patient name: 
age: 
patient_activity: 
    { 
    lab: 
    [ 
    { 
     test_name: 
     test_results: 
    } 
    .... 
    .... 
    ] 
    xray: 
    [ 
    { 
     xray: 
     comments: 
    } 
    .... 
    .... 
    ] 
    .... 
    .... 
    } 

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

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

Благодаря

ответ

2

Насколько я знаю, по doc, глубина вложенности ReQL, ограничена до 20 уровней ,

+0

Хорошо, что гнездится 20 уровней – Jawad

+1

@Jawad это зависит. Например, в случае, если вы пытаетесь «фильтровать» таблицу по вложенным полям, это приведет к снижению производительности. То же самое для подписки на changefeeds. Я рекомендую сохранить уровень вложенности <8-10. Например, вы можете перемещать некоторые поля в другую таблицу и связывать данные по id (например, внешние ключи в SQL-базах данных). – Suvitruf

0

documentation on data modeling дает на обзор различных моделей и их плюсы и минусы:

Есть два способа смоделировать отношения между документами в RethinkDB:

  • Используя встроенные массивы.
  • Связывание документов, хранящихся в нескольких таблицах (подобно традиционным системам реляционных баз данных).