2012-07-04 2 views
2

Я просто смотрю, чтобы играть с NoSQL и Node.js переписав очень простой MySQL и PHP приложение таким образом, студенты могут оставлять комментарии к профессорам:Самый простой способ экспортировать базу данных MySQL в CouchDB?

Table: Prof 
Columns: id, first, last, university, department 

Table: Comments 
Columns: id, user_id, likes, data 

Отношения в основном Профессор имеет много Комментарии и комментарий принадлежат одному профессору.

Я думаю, что версия CouchDB/JSON будет выглядеть следующим образом:

{ "Profs" : [{ 
    "Comments" : [ {"data" : "comment1", "likes" : 42 } , { "data" : "comment2", "likes" : 1} ], 
"first" : "Carlos", 
"last" : "Marx", 
"university" : "some university", 
"department" : "math" 
}, {...another prof with comments...}], 
} 

Мой первый вопрос, есть инструмент или скрипт можно запустить импортировать все мои данные в нечто CouchDB может работать? Если нет, что бы вы порекомендовали? Я могу экспортировать его в .sql и .cvs из phpmyadmin.

Мой второй вопрос: правильно ли я структурировал свои данные в JSON?

Спасибо!

ответ

2

Вы действительно не просто экспортируете базу данных MySQL в CouchDB или любую другую базу данных NoSQL. Это разные парадигмы и требуют изменения того, как вы думаете о том, как хранятся ваши данные. Существуют отличные варианты использования как для реляционных, так и для баз данных документов, и, хотя существует много перекрытий, они оба превосходят разные вещи.

С базами данных NoSQL очень важно понять, как ваши данные будут использоваться. Как данные записываются и используются вашим приложением, и если данные часто обновляются, все они оказывают очень важное влияние на то, как вы должны проектировать свои документы. Например, в вашем примере. Можете ли вы отредактировать комментарии? Как просматриваются комментарии? Вы всегда показываете все из них или хотите, чтобы результаты были выгружены? Как часто добавляются комментарии? Могут ли они быть удалены? Не зная ответов на некоторые из этих вопросов, я не могу точно сказать, является ли CouchDB даже правильным решением NoSQL для проблемы!

Прошу прощения, что это своего рода непрямой ответ на ваш вопрос, но приближение перехода от реляционной базы данных к решению NoSQL в виде простой карты из таблиц в коллекции является рецептом сбоя. После того, как вы потратили время на разработку того, как ваши документы должны выглядеть в CouchDB, данные должны пройти процесс трансформации. Это может иметь много форм. Вы можете написать приложение, которое может читать из MySQL и писать в CouchDB, или вы можете экспортировать его в другой формат и импортировать скрипт. Не существует волшебной кнопки, которая приведет вашу базу данных MySQL и превратит ее в базу данных Couch, и, если она есть, она действительно не должна существовать из-за проблем, упомянутых выше.

2

Это классический сценарий типа сообщений в блоге + комментарии.

Вместо использования монолитного документа JSON для всей БД, разделяйте комментарии и profs на отдельные капли JSON. Я предлагаю использовать адреса электронной почты для идентификаторов, поскольку они уникальны, и почти у всех их есть. Используйте функцию include_docs CouchDB для связывания документа doc и комментариев.

{ 
    "_id": "[email protected]", 
    "university" : "Some Uni", 
    "department" : "Math", 
    "name" : "Carlos Marx" 
} 

{ 
    "_id": "comment1", 
    "prof": "[email protected]", 
    "comment": "Very smart" 
} 
Смежные вопросы