我应该选择哪个数据库? MySQL还是mongoDB?

时间:2014-04-21 06:41:35

标签: mysql json mongodb

我正在开发一个对WhatApp有点熟悉的项目,除了我没有实现聊天功能。

我需要在数据库中存储的唯一内容是用户的信息,这些信息不会很大,我还需要移动应用程序中的离线数据库,该数据库应该与服务器数据库同步

目前我使用MySQL作为我的服务器数据库,并且我正在考虑使用JSON进行移动应用程序和服务器之间的同步,然后我发现mongoDB对JSON有一个自然的支持,这让我想知道我应该更改为mongoDB。

所以这是我的问题:

  1. 我应该更改为mongoDB还是应该使用MySQL?每个用户的数据不会太大,并且确实需要数据一致性。但是mongoDB的JSON支持有点吸引力。

  2. 我不熟悉同步过程,我做了一些挖掘,看起来JSON是一个不错的选择,但我应该将哪些数据放入JSON文件中?

1 个答案:

答案 0 :(得分:0)

我实际上将此标记为过于宽泛并主要吸引基于意见的答案,但无论如何我都会试一试并希望保持客观。

首先,你在这里有两个不同的问题。

  1. 我应该使用什么数据库系统。
  2. 如何在应用和服务器之间同步。
  3. 第一个很容易回答,因为它并不重要。两者都是存储数据的好选择。 MySQL是成熟稳定的,MongoDB虽然它的新版本有很好的评论,但我不知道任何会阻止它被使用的已知问题。因此,请使用您觉得易于使用的数据库。

    现在第二次,我首先提出一个免责声明,即对于多个实体之间的数据同步,整本书都会被写入并且毕竟这一次仍然是Phds的主题。

    我建议不要在移动应用和数据库之间直接同步,因为这需要数据库凭据包含在应用中。移动应用程序可以并且将被反编译并提取凭据,这将损害整个数据库。因此,您可能希望创建一些首先进行设备/用户身份验证然后更改数据库的API。

    这已经意味着为了这个而使用MongoDB可能是一个坏主意。

    现在JSON本身只是一种表示具有某种结构的数据的格式,就像XML一样。因此,它不是同步而是传输的方法。

    为了同步数据,了解真相的来源非常重要。 如果你有1 device <-> 1 record它很容易,因为设备将成为事实的来源,所有发生的唯一突变可能是用户在设备上完成的。

    如果你有n devices <-> 1 record那么它会变得更加烦人。如果您希望设备在离线时更改状态,则在设备重新联机时需要执行一些技巧来同步数据。但这可能是一个太复杂的问题,而且情况依赖于回答SO。

    但是,如果强制设备始终立即将更改传播到数据库,则数据库将始终包含最新的记录或事实。缺点是应用程序的一部分在离线时无法正常运行。

    如果离线更新不会更改状态,只是添加新记录,那么您可以在服务器联机时将其推送到服务器。但请记住,您无法订购这些活动。