Как смоделировать мой домен для использования в couchDB? - PullRequest
1 голос
/ 21 ноября 2010

Я привык к BigTable nosql db в Google AppEngine. Сейчас я изучаю couchDB с его понятием «документ». Я не уверен, что две вещи одинаковы. В большой таблице GAE вы моделируете свои данные точно так же, как и в реляционной БД, за исключением того, что существует только минимальная транзакция (используемая только для связи деталей с сущностью), нет объединений и ограничений на поля (каждая строка может иметь разные поля).

Это верно и для couchDB? они другие способы отобразить нормальные объекты? Например, для отслеживания ошибок, как бы вы отобразили Bug, User (который открыл ошибку), Developer (который должен ее исправить), BugType и BugStatus?

Ответы [ 2 ]

2 голосов
/ 23 ноября 2010

Прошло много времени с тех пор, как я использовал GAE.Насколько я помню, есть модели, и все объекты одной и той же модели имеют одинаковые атрибуты с разными значениями.Вы можете сделать запрос к базе данных с помощью языка запросов, похожего на SQL.

В CouchDB все, что вы храните, - это документ, и вам не нужно вводить документы в какую-либо схему.Вы запрашиваете свои документы, написав функции JavaScript, а не написав SQL и соединяя таблицы.Вместо этого вам следует максимально денормализовать ваши данные.

Я бы предложил следующий пример документа об ошибке:

{ 
  "_id" : "bug-1234",
  "type" : "bug",
  "state" : "new",
  "user" : { 
      "name" : "user",
      "email" : "user@example.com"},
  "developer" : {
      "name" : "superdev",
      "email" : "dev@example.com",
      "id" : "dev-123"},
  "title" : "this is the bug title",
  "description" : "this is the bug description",
  "comments" : [
      {"user" : "tom", "text" : "first!"}, 
      {"user" : "jerry", "text" : "LOL"}
  ]
}

Этот пост может помочь вам http://www.couch.io/migrating-to-couchdb

1 голос
/ 10 декабря 2010

Лучший блог, который я нашел о данных моделирования в couchdb:

http://www.cmlenz.net/archives/2007/10/couchdb-joins

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