【问题标题】:What engine type would be better in this scenario? [closed]在这种情况下,哪种发动机类型会更好? [关闭]
【发布时间】:2016-03-21 15:42:11
【问题描述】:

我正在编写一个 Android 应用程序,它将与我的网络服务器上的 MySQL 数据库同步(还会有一个网站读取/写入相同的数据库)。 android 应用程序会将数据的副本本地存储在 sqlite 数据库中,以便在离线时提供访问。如果用户在离线时创建行,则该记录将在下次数据连接可用时上传到服务器。我自己设计应用程序和网站,因此我可以根据自己的需要进行设置(这意味着它不必符合其他人的服务器)。

sqlite db 将有一个 id 列(表示存储在服务器上的 id)和一个 localID 列。当服务器接收到数据时,它将通过返回一个存储在服务器上的 ID 号数组(以 json 格式)来确认新数据。

对于这种类型的场景,什么会更好:事务安全引擎还是非事务安全引擎(例如 isam)?我的理解是 isam 会更快,存储空间更少,但我无法处理丢失数据。我在想如果安卓应用没有收到确认,它会重新提交数据。这似乎可以防止数据丢失,但我需要第二个(更有经验的)意见。如果您要使用事务安全的数据库,您会推荐哪个,因为我从未使用过?

TIA!

【问题讨论】:

  • 我投票结束您的问题,因为这里主要基于意见或过于宽泛。你有一个复杂的问题要解决。您对它的第一个想法是一个很好的 localid。但是您缺少例外情况。比如:如果其他人从另一台设备添加了相同的注册表怎么办?如果有人删除了您在设备上编辑的注册表怎么办?如果您删除从您的站点更新的注册表怎么办?在尝试确定您的系统是否应该是事务性的之前,您应该了解许多情况并决定当时每个人应该发生什么
  • 虽然事务性几乎总是更好的选择。
  • 我知道这是基于意见 - 作为一个没有太多使用 MySQL 经验的人,我希望从有经验的人那里获得有关为什么一个比另一个更有意义的信息。
  • 我按 Enter 忘记了这样做与提交相同,所以这里是评论的其余部分:我已经考虑过有人从另一台设备编辑数据的想法,尽管最终计划尚未确定下来,我有一些计划需要解决。我没有提到这一点,因为我认为这会使其“过于宽泛”且不够具体。

标签: mysql


【解决方案1】:

real database 应该是您的默认选择,直到您发现它不够快。

考虑使用 UUID 在客户端生成 ID,这些 ID 保证在服务器上是唯一的。

您是否考虑过如何处理来自多个设备的更新,这些设备都具有离线更改?您应该考虑一些已知的模式来处理这种同步。

  1. Stack Overflow question
  2. Data Replication book

【讨论】:

    猜你喜欢
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多