2014-11-23 80 views
0

我目前正在從事(商業)物流項目。我們建立了一個(部分)自動化存儲系統,其中貨物隨機存儲(想想納米亞馬遜)。對象的位置存儲在主計算機上,目前我們正在通過WAL實施異地備份(任何異議?)。我們的問題之一是我們必須在停電期間進行操作,並且在最壞的情況下停電可能需要幾個小時,我們無法爲我們的計算機產生足夠的能量。 [這可能不會發生,因爲我們在德國,但有一些法規我們需要履行]。平板電腦上的Postgresql服務器?

所以我的想法是使用平板電腦(比筆記本電腦便宜),將WAL文件發送給它,以便用戶可以在停電期間訪問數據。但到目前爲止,我沒有看到平板電腦(無論是Android或iOS)的服務器實施。有沒有或我沒有找到它?

但也許我也在走錯方向。該數據庫是相當小的(<倉庫中的50000個對象,每個< 1kb),我們在中斷期間需要的信息只是一個表(object_id - > position_in_warehouse),所以我甚至考慮將這些信息寫入文件並使用git將更改複製到平板電腦。我們也只需要知道在停電期間哪些對象已被移除,以便這些信息可以很容易地移回到原始數據庫。

或者您有其他想法嗎?

+0

可能可以通過觸發+ pl/pythin函數將更改從postgres表推送到遠程SQLite數據庫。或者觸發+ SQLite FDW。 SQLite數據庫可以安裝在平板電腦上。 – 2014-11-23 16:10:06

+0

你考慮過UPS嗎? – 2016-01-24 13:16:58

回答

2

我不認爲有一個端口的Postgres Android - 使用WAL文件,你需要一個工作服務器。即使它被移植了,你也無法將WAL文件從x86服務器發佈到Android平板電腦 - 主機和從機必須是相同的主要版本,操作系統和體系結構。

你真的應該只是定期從Postgres導出你的數據到一個簡單的文件(我推薦SQLite),並從服務器上下載它。我想你的平板電腦使用WiFi,這個文件就像10MB的zip壓縮。

或者,您可以使用rsync來更新此文件。請勿使用git - 它會將此文件的所有以前版本保留在平板電腦上 - 它會變得相當快。

+0

謝謝! (不能upvote呢)。關於git:我計劃使用一個簡單的文本文件來存儲對象位置。在這種情況下,git只是存儲差異而不是新的文本文件。或者你想說什麼? – Foo 2014-11-23 10:28:08

+0

是的,它存儲差異。但所有這些。 Evey單獨更新。它會工作,但它會浪費平板電腦的空間。 – Tometzky 2014-11-23 11:06:39

+0

好的。我不知道rsync也只發送差異。所以我想對我來說最簡單的方法是使用cron作業,間隔幾分鐘,觸發我的文本文件更新並使用rsync更新平板電腦。 – Foo 2014-11-23 11:26:25

3

你的時間對你有任何價值嗎?立即放棄Android + PostgreSQL選項。

保持簡單。幾乎沒有任何東西可以買到便宜的筆記本電腦,特別是二手。既然你明顯不在乎它實際上工作作爲一個備份選項,這似乎是一個簡單的。您可以運行WAL歸檔的流式副本進行回退。

對於真正的備選方案,您正確地將需要的數據寫入平面文件並同步。請記住實際測試它 - 你應該偶爾使用它並確保它能正常工作。

順便說一下,對於您的WAL流式備份,我建議PgBarman,它將爲您管理保留和輪換。你應該做邏輯轉儲,記得測試你的備份

+0

備份硬件(平板電腦或筆記本電腦)將成爲我們產品的一部分,我感覺一臺完整的筆記本電腦太大而且功能強大。我只想顯示一些數據庫(或文件)中的一些簡單值,而一臺完整的筆記本電腦聽起來像是一種矯枉過正。但我們仍在開發該功能。如果我們決定不使用平板電腦,我們甚至可以將數據寫入USB棒並使用用戶的筆記本電腦。 (但我們當然強迫他總是有一個充電的筆記本電腦)。 – Foo 2014-11-23 20:58:47

+0

@Foo開發產品的功能? EEP。你說話的方式聽起來好像你正在爲一些內部操作處理一個討厭的不切實際的規定,而不是爲別人建立某種東西。我認爲,對於*產品*,要做的恰當事情幾乎可以肯定是附加了一個平板電腦,並定期用關鍵表的副本更新SQLite數據庫。 – 2014-11-24 02:19:23

相關問題