2010-01-21 125 views
9

有沒有一種方法可以將真實數據庫(SQLite,Mysql甚至某些非關係數據庫)用作開發數據存儲,而不是提供的內存/文件數據存儲。我看到幾個項目,GAE-SQLite(似乎沒有工作)和一個關於使用遠程api訪問生產數據存儲的提示(對於大型數據集仍然很慢)。更快的應用程序引擎開發數據存儲替代

+1

爲什麼?你會獲得什麼優勢? – 2010-01-22 02:13:47

+3

開發更簡單,SDK附帶的開發數據存儲實施起來太慢,即使只有幾百個實體也是如此。 – 2010-01-22 03:33:57

+1

除了我下面的回答,我沒有遇到你提到的大量實體的顯着減速。 – 2010-01-22 09:59:00

回答

4

MongoDB非常適合這種情況。你將需要:

代碼:

import datastore_mongo_stub 

os.environ['APPLICATION_ID'] = 'test' 

datastore = datastore_mongo_stub.DatastoreMongoStub(
    os.environ['APPLICATION_ID'], 'woot', '', require_indexes=False) 

apiproxy_stub_map.apiproxy.RegisterStub('datastore_v3', datastore) 

但是,如果你我正在尋找真正的更快的開發(就像我一樣),數據存儲實際上不是問題是單線程的Web服務器。 I tried to replace it with spawning但這太難了。你也可以嘗試設置TyphoonAE,這將模擬帶有開放選擇的appengine堆棧。

請注意,如果您執行其中的任何操作,您可能會失去當前工具提供的某些確切行爲,這意味着如果部署您可能會得到您沒有預料到的結果。換一種說法;確保你知道你在做什麼:-)

+0

Koen感謝,這是我所尋找的最接近的東西,不幸的是管理控制檯是沒用的,因爲Schema內省沒有實現,我正在尋找一個可以用來查看的GUI工具至少有數據 – 2010-01-22 19:25:32

+0

好的,還有一些其他的指針,有一個人創建了一個SQLite存根:http://blog.appenginefan.com/search/label/SQLite。我很確定他是否完成了它,但是也許你可以讓它工作,對於SQLLite應該有足夠的GUI瀏覽器,但要記住,數據模型並不是非常可瀏覽的,因爲它模仿了一個鍵值存儲,然後我又做了一個新的appengine發展和從未真正需要的數據一個瀏覽器,但也許這是一種風格的東西。祝你好運:-) – 2010-01-22 20:35:10

+0

哦,並考慮到這個問題,databrowser應該使用任何存根,因爲它使用正常的數據存儲區api。所以,如果它不能立即使用,它不應該很難解決。 – 2010-01-22 20:36:53

1

bdbdatastore是一個替代數據存儲後端,它比內置於開發服務器的數據存儲後端更好,儘管在處理大型應用程序時數據存儲遠遠不是開發服務器的唯一問題。

+0

不幸的是,它很不合時宜,我試圖將補丁應用到SDK 1.3,但補丁相當大在沒有理解所有底層代碼的情況下修復這個問題 – 2010-01-22 04:42:40

2

Google App Engine SDK for Python現在捆綁了對SQLite的支持。有關更多信息,請參閱official docs

相關問題