从 MySQL 迁移到 Couchbase 服务器 (NoSQL)

Migrating from MySQL to Couchbase Server (NoSQL)

我打算将我的一些 RDBMS 表移动到 NoSQL 环境中。我有不同的模块和关联表,如下所示。

1. General 
    News table
    Trainings table 
    Knowledge table
 2. Application_x
    Clicks table
    Crashes table

注意:这是示例场景

在这种情况下,这就是我定义 Nosql (Couchbase server) 结构的方式。如果这是错误的,请纠正我。

迁移的目的主要是为了搜索。

{
    "General":[
        "news" : [{
            "id" : "123",
            "title" : "test title"
        },
        {
            "id" : "345",
            "title" : "test title 2"
        }],
        "trainings" :[{
            "id" : "1",
            "name" : "training 1"
        },
        {
            "id" : "2",
            "name" : "training 2"
        }],
        "knowledge" :[{
            "id" : "1",
            "categ" : "programming"
        },
        {
            "id" : "2",
            "categ" : "management"
        }]
    ],
    "Application_x": [
        "clicks" : [{
            "userid" : "1",
            "area" : "1850",
        },
        {
            "userid" : "2",
            "area" : "258",
        }],
        "crashes" :[{
            "userid" : "1",
            "severity" : "1",
        },
        {
            "userid" : "2",
            "severity" : "8",
        }]
    ]
}

如果我的方法不正确,有人可以纠正我吗?

提前致谢, Tismon Varghese.

通过阅读您的问题,我对您的方法感到摸不着头脑。在 NoSQL 数据库(例如 couchbase)中——您没有表和列的概念。每个对象都序列化为 JSON 并以纯文本形式存储。是的,这会产生重复,但可扩展性的好处大大超过了重复的缺点。

在此示例中,使用 Couchbase,您可能希望为每个应用程序创建一个 Couchbase 存储桶。这样,如果您以后需要迁移到不同的 Couchbase 集群,则只需进行最少的配置。表格中的每一行都在 Couchbase 中创建为一个单独的对象。桶内的对象类型无需分隔。

This blog entry 包含一些关于如何从 mySQL 迁移到 Couchbase 的详细说明。

附带说明一下,我可能会建议将 Couchbase 与 Elasticsearch 结合使用。