簡體   English   中英

將PouchDB與SQL Server和CouchDB一起使用

[英]Using PouchDB with SQL Server and CouchDB

我知道PouchDB只能與CouchDB兼容的服務器一起使用。 有沒有辦法在保持原始架構的同時使用SQL Server作為后端?

我有一個想法如何實現這一點,但我不完全確定它是否可行。 任何能夠帶來這一成果的答案都將受到贊賞。

我可以通過使用CouchDB存儲同步元數據(如修訂版)和成功同步所需的所有內容來實現。 然后,實際的最新數據將按照其原始模式存儲在SQL Server上。

為了能夠實現這一點,我需要使用我的堆棧C#創建一個CouchDB兼容服務器。 這將像CouchDB和PouchDB之間的代理一樣,所以我實際上並不需要實現所有方法。 我將不得不攔截某些方法,這些方法將允許我在服務器上保持SQL Server和CouchDB同步(遵循業務規則),同時利用CouchDB與SQL Server數據的同步功能。 有了這個,我還可以在將來添加一堆我希望的中間件。

這件事可行嗎? 我知道express-pouchdb存在,但它只是一個帶有PouchDB后端的CouchDB兼容服務器。 我想要的是讓CouchDB和SQL Server協同工作。 如果是這樣,我應該怎么做呢?

可能聽起來像一個瘋狂的想法,但您可以在服務器上使用PouchDB並插入使用SQL Server的備用存儲適配器。 這樣您就不需要重新實現復制邏輯(這非常困難),您可以專注於存儲部分。

一些指示:

您可以在Couchdb的_changes API上設置服務器端偵聽器。 此API允許服務器運行更改偵聽器進程,該進程在CouchDB中更改數據時觸發。 通過檢查更改列表(docs)和更改類型,可以使用某些自定義邏輯映射要在SQL中鏡像的JSON文檔(或部分文檔)。

根據架構,將JSON映射到關系表可能很困難。 通過僅將有意義的數據映射為關系來減少復雜性。 稱之為混合方法。 例如,客戶定義可以在CouchDB中保持無模式(從而保留無模式的優勢),但銷售訂單項可以在SQL中鏡像,以便於報告。 最有可能只有某些數據真正有意義地存儲在SQL Server中。 Couchdb是您的真相來源。

您詢問了有關維護SQL架構的問題。 實際上,您很可能不希望或不必完全維護SQL Schema。 使用上述方法,如果客戶的地址發生變化,您可能不關心SQL; 客戶架構在CouchDB中保持靈活性。 但是,您可能希望為客戶ID(僅)創建SQL條目以強制參照完整性,並在刪除客戶時處理該情況。

可以從某個時間點重播_changes以從故障中恢復。

以供參考:

http://guide.couchdb.org/draft/notifications.html

暫無
暫無

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

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