簡體   English   中英

維護移動客戶端和服務器之間的參照完整性

[英]Maintaining referential integrity between a mobile client and a server

所以我有一個相對簡單的系統。 移動客戶端在sqlite數據庫中創建我想同步到遠程SQL Server(與其他移動客戶端共享)的記錄 因此,當我在電話的sqlite表中創建新記錄時,我隨后通過RESTful API將更改推送到遠程服務。 我遇到的問題是如何排序主鍵,以便數據中沒有沖突 (即電話中的記錄具有與服務器上完全不同的記錄相同的主鍵)。 在客戶端上引用記錄並在服務器上引用相同記錄的最佳做法是什么?

您可以將GUID類型的列用作主鍵。 據我所知,SQL Server支持UNIQUEIDENTIFIER類型的SQLite支持GUID類型(否則,電話上的客戶端應用程序必須產生GUID值)。 這應該保證客戶端和服務器上的唯一值。

GUID是一個不錯的選擇,但意義不大。 您可以發送設備ID +遞增的標識值和/或時間來很好

這樣,通過查看記錄,您可以確定設備來自什么設備以及它們發生的順序。

根據您的應用程序,這可能是非常有用的信息。

按我的喜好順序很少。 如果您的情況不適合,請隨時在評論中進行澄清:

  • 識別自然鍵,或者如果不存在自然鍵,則創建一個可人工識別本地數據屬性的人工鍵。 請注意,人工密鑰與此處所述的替代密鑰不同。 將其與唯一的設備ID結合使用以創建復合主鍵

  • 使用SQLite ROWID (代理鍵)和唯一的設備ID作為復合主鍵

  • 對每行使用全局唯一標識符,請注意此處記錄的潛在陷阱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM