2

我有一箇中等大小(~100mb)的只讀數據庫,我想放在谷歌應用程序引擎上。我可以把它放到數據存儲中,但是數據存儲有點慢,沒有關係特性,還有其他許多令人沮喪的限制(這裏不會介紹)。另一種選擇是將所有數據加載到內存中,但我很快就達到了谷歌的配額。最後的選擇是使用django-nonrel + djangoappengine,但恐怕這個軟件包還處於初級階段。Google App Engine上的只讀關係數據庫?

理想情況下,我想創建一個使用blobstore作爲其數據源的只讀sqlite數據庫。這可能嗎?

+3

你試圖解決什麼問題?你需要什麼數據庫?如果它只讀,爲什麼不能將數據轉換爲離線狀態?如果它只有100MB,那麼可以用10種不同的方法對它進行非規範化以支持各種查詢。 – 2011-01-11 23:17:40

+0

假設我可以離線將它置於不同的狀態,那麼是什麼?我是否將其作爲Blobstore上傳並手動搜索?或者我將它存儲在數據存儲中?另外,如果我要將所有內容去規範化,那麼數據很容易就會變成千兆字節的範圍。例如,我正在使用自定義版本的地理模型來支持位置搜索。反規格化位置數據會導致其大小爆炸。 – speedplane 2011-01-12 18:16:23

回答

2

我不認爲你可能會找到類似的東西......當然不會超過blobstore。因爲如果所有數據都存儲在一個blob中,則必須將整個數據庫讀入內存才能進行任何操作,並且您說過不能這樣做。

將數據存儲用作後端更合理,但數量並不多。在那裏提供SQLite驅動程序的一個大問題就是實現事務語義,因爲這是GAE爲了高可用性而帶走的關鍵東西,所以很難想象有人會寫很多麻煩來寫這樣的東西。

1

雖然可以通過BlobReader類訪問Blobstore對象作爲類文件對象,但它可能會更糟糕地使數據存儲區嘗試在這樣的文件上執行關係數據庫操作而不加載整個文件首先進入記憶。

+0

我在想,也許用智能內存緩存它可能是可行的。 – speedplane 2011-01-11 22:33:39

2

django-nonrel不會奇蹟般地提供SQL數據庫 - 所以它不是真的解決您的問題。

可以像訪問文件一樣訪問blobstore blob,但SQLite模塊需要本機C擴展,該擴展在App Engine上未啓用。