2012-12-16 76 views
12

我正在尋找快速有效的數據存儲來建立我的基於PHP的網站。我知道MySql。我可以在服務器根目錄中使用JSON文件而不是MySQL數據庫嗎?如果是,那麼最好的辦法是什麼?我們可以使用JSON作爲數據庫嗎?

+0

我應該寫答案在這裏或在英語嗎? –

+0

好的沒問題:) :) – sami

+2

Mongo DB?這就像一個JSON數據庫... – McGarnagle

回答

17

你可以用任何單一的文件,包括一個JSON文件,如:

  • 鎖定它以某種方式(谷歌PHP文件鎖定,這可能是由於添加的參數文件打開功能或改變功能一樣簡單名稱鎖定版本)。

  • 從文件中讀取數據並將其解析爲內部數據結構。

  • (可選)修改內部數據結構中的數據。

  • 如果修改了數據,請將該文件截斷爲0長度並向其寫入新數據。

  • 只要你能,其他請求可能會等待解鎖文件...

  • 您可以繼續使用在內部結構中的數據來渲染頁面,只記得它可能會過時的一旦釋放文件鎖定,其他HTTP請求就可以修改它。

此外,如果從用戶的web表單修改數據,請記住,它可能在兩者之間已被修改。就像加載用戶詳細信息的頁面進行編輯,然後其他用戶刪除該用戶,然後編輯器嘗試保存更改的詳細信息,並且應該可能會出錯,而不是重新創建已刪除的用戶。

注意:這是非常低效的。如果您正在構建一個網站,您期望的不止是10個併發用戶,您必須使用更復雜的方案,或者只使用現有的數據庫...此外,您不能擁有太多數據,因爲解析JSON並生成修改JSON需要時間。

只要你在某一時刻只有一個用戶,它只會越來越慢作爲數據量的增長,但隨着用戶數量的增加,更多的用戶意味着更多的都要求更多的數據,東西開始得到成倍,你很快觸及跌停,其中HTTP請求開始過期之前的文件都可以處理的請求......

在這一點上,不要試圖破解它,使其速度更快,但而是選擇一些現有的數據庫框架(SQL或nosql或基於文件)。如果你開始一起攻擊你自己,你最終會重新發明輪子,通常很糟糕:-)。那麼,除非它只是編程練習,但即使如此,它可能會更好地學習使用一些現有的框架。

+2

良好的寫作。設計有效和長期運行的數據存儲是困難的。我記得Brian Aker離開MySQL開始了Drizzle;他的博客充滿了與之相關的所有這些有趣的設計挑戰和決定。我給他留下了一些關於Cassandra的評論,這似乎是一個全面的基於JSON的分佈式數據存儲。 –

1

新版本的IBM Informix 12.10 xC2現在支持JSON。
檢查鏈接:http://pic.dhe.ibm.com/infocenter/informix/v121/topic/com.ibm.json.doc/ids_json_007.htm

該手冊說它與MongoDB驅動程序兼容。

關於Informix的JSON兼容性

應用程序使用面向JSON的查詢語言,通過 MongoDB的創建,可以存儲在Informix®數據庫的數據進行交互。 Informix數據庫服務器還提供內置的JSON和BSON(二進制 JSON)數據類型。

您可以使用MongoDB社區驅動程序在Informix中插入,更新和查詢 JSON文檔。

不確定,但我相信您可以使用Innovator-C版(免費用於生產)來免費測試和使用它,用於生產環境。

1

我寫了一個對象文檔映射器與json文件一起使用,名爲JSON ODM可能有點晚,但如果仍然需要它,它是MIT許可證下的開源代碼。

它提供了一個查詢languge,有的GeoJSON工具

相關問題