2015-12-15 101 views
0

我正在写一个Android应用程序,它将与我的网络服务器上的MySQL数据库同步(也将有一个网站读取/写入相同的dB)。 android应用程序将在sqlite数据库中本地存储数据的副本,以在离线时提供访问权限。如果用户在离线状态下创建一行,则下次有数据连接可用时,该记录将上载到服务器。我自己在设计应用程序和网站,所以我有能力按照我认为合适的方式进行设置(意味着它不必遵守别人的服务器)。在这种情况下哪种引擎类型会更好?

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

对于这种类型的场景,事务安全的引擎还是非事务安全的(比如isam)会更好?我的理解是,isam会更快,占用更少的空间,但我无法处理丢失的数据。我在想,如果android应用程序没有收到确认,它会重新提交数据。看起来这样可以防止数据丢失,但我需要第二种(更有经验的)意见。如果你愿意使用一个事务安全的数据库,你会推荐这个数据库,因为我从来没有使用过一个数据库?

TIA!

+0

我投票决定关闭你的问题,因为这是两种主要基于舆论或过于宽泛。你有一个复杂的问题需要解决。你首先想到的是一个localid。但你缺乏例外情况。喜欢:如果其他人从另一个设备添加了相同的注册表会怎么样?如果有人删除您在设备上编辑的注册表,该怎么办?如果删除已从您的网站更新过的注册表,该怎么办?在确定系统是否是事务性的之前,您应该了解许多情况并决定在每个人中应该发生什么事情。 –

+0

尽管事务性几乎总是一个更好的选择。 –

+0

我知道它是基于意见的 - 作为没有太多使用MySQL经验的人,我希望从有经验的人那里获得信息,为什么一个人会比另一个人更有意义。 – doni49

回答

1

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

考虑使用UUID在客户端上生成确保服务器上唯一的ID。

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

  1. Stack Overflow question
  2. Data Replication book
相关问题