【问题标题】:Easiest way to export a MySQL database to CouchDB?将 MySQL 数据库导出到 CouchDB 的最简单方法是什么?
【发布时间】:2012-07-04 12:10:13
【问题描述】:

我只是想通过重写一个非常简单的 MySQL 和 PHP 应用程序来玩弄 NOSQL 和 Node.js,以便学生可以将 cmets 留给教授:

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 可以运行的东西吗?如果没有,你会推荐什么?我可以将它从 phpmyadmin 导出到 .sql 和 .cvs。

我的第二个问题是我是否在 JSON 中正确地构建了我的数据?

谢谢!

【问题讨论】:

    标签: mysql node.js database-design nosql couchdb


    【解决方案1】:

    这是一个经典的博文+cmets类型的场景。

    不要对整个数据库使用单一的 JSON 文档,而是将 cmets 和 profs 拆分为单独的 JSON blob。我建议使用电子邮件地址作为 ID,因为它们是独一无二的,几乎每个人都有。使用 CouchDB 的 include_docs 功能将 prof 文档和评论文档链接在一起。

    {
      "_id": "carlos_marx@uni.de",
      "university" : "Some Uni",
      "department" : "Math",
      "name" : "Carlos Marx"
    }
    
    {
      "_id": "comment1",
      "prof": "carlos_marx@uni.de",
      "comment": "Very smart"
    }
    

    【讨论】:

      【解决方案2】:

      您真的不只是将 MySQL 数据库导出到 CouchDB 或任何其他 NoSQL 数据库。它们是不同的范例,需要改变您对数据存储方式的看法。关系数据库和文档数据库都有很好的用例,虽然有很多重叠之处,但它们都擅长不同的事情。

      对于 NoSQL 数据库,了解如何使用您的数据非常重要。您的应用程序如何编写和使用数据,以及数据是否经常更新,都对您应该如何设计文档有非常重要的影响。例如在你的例子中。可以编辑 cmets 吗?如何看待 cmets?您是总是显示所有这些,还是希望对结果进行分页? cmets 多久添加一次?它们可以被移除吗?在不知道其中一些问题的答案的情况下,我无法确定 CouchDB 是否是解决该问题的正确 NoSQL 解决方案!

      很抱歉,这是对您问题的非直接回答,但是从关系数据库迁移到 NoSQL 解决方案作为从表到集合的简单映射是失败的秘诀。一旦您花时间设计文档在 CouchDB 中的外观,数据就必须经过转换过程。这可以采取多种形式。您可以编写一个可以从 MySQL 读取并写入 CouchDB 的应用程序,或者您可以导出为其他格式并通过脚本导入该文件。没有魔术按钮可以将您的 MySQL 数据库转换为 Couch 数据库,如果有,由于上述问题,它确实不应该存在。

      【讨论】:

        猜你喜欢
        • 2017-07-24
        • 2010-11-24
        • 2011-05-13
        • 1970-01-01
        • 2022-12-17
        • 1970-01-01
        • 2011-02-27
        • 1970-01-01
        • 2011-10-09
        相关资源
        最近更新 更多