MySQL中的UUDI / GUID主键

时间:2017-09-01 08:11:52

标签: mysql primary-key uuid guid

我们有一个应用程序(IONIC 2手机应用程序前端,带有MySql Server的ASP .Net Core 2.0 Web Api后端)。

手机应用程序需要能够在离线模式下工作,并且能够在有互联网连接时同步(上下)。我立即意识到MySql数据库中的自动递增int主键将是一个问题,并考虑使用GUID / UUID主键。但我担心表现。我有两个问题:

  1. 在MySql中存储UUID字段的最佳方法是什么? CHAR(36)?据我所知,MySql没有专用的UUID数据类型? (我正在使用MySql Server 5.6.30)

  2. 最好不要让它成为主键,这样它不是独一无二的吗?当然这会加速表现?并且UUID几乎保证是唯一的,因此MySql Server不需要浪费时间检查这个......

  3. 由于

1 个答案:

答案 0 :(得分:1)

如果没有完整的详细信息,我会建议以下一般工作流程:

  • 用户添加新产品
  • 这会导致将记录写入本地SQLite数据库
  • 维护一个名为sync的列,用于跟踪本地记录是否已被推送到服务器
  • 请注意,应用显示的产品是缓存的服务器数据和尚未同步的SQLite数据的总和
  • 当应用执行同步时,它会先推送新产品,然后将这些SQLite记录标记为已同步
  • 当它提取最新目录时,它将返回带有实际唯一ID的新产品,因为它们出现在远程MySQL数据库中
  • 如果应用再次离线,那么只需返回第一步并执行相同的操作


这里的基本思想是尽可能专注于保持一个版本的真相。不要为您的应用分配任务,并为服务器一无所知的产品分配ID。首先,分配这样的ID是否有意义,然后用户决定在没有同步的情况下删除产品?