2010-01-09 31 views
1

我正在尋找一種形式的數據存儲,將回答幾個要求。我意識到這些要求是非標準的,現在我像其他人一樣使用activerecord和ORM解決方案,但這是我的「聖盃」 - 如果你知道這樣的事情,我將永遠感激:正在尋找一個數據庫抽象/替代實際工作

  1. 純PHP
  2. 多個倉庫,最好基於文件的便於攜帶,在那裏我可以告訴它實例化「使用庫[X]」 - 我不想預先創建庫[X], 如果我參考它,它存在
  3. 零數據庫配置 - 我不想創建表或導出SQL轉儲,如果在我的Code的引用,它需要在數據庫中,自動創建的沒有任何大驚小怪,我的代碼是我的架構
  4. 分層,不是關係型的,理想結構只是一個自由形式的無模式XML,但是由於XML對於大型樹木表現可怕,它不能簡單地成爲一個XML文件。

我已經嘗試過使用平面XML存儲(帶有xpath和xquery),但是它對中等大小的存儲庫感到不安,並且使應用程序癱瘓。我還試驗了用一個通用表放入SQLite數據庫中的key =>值對,但是甚至更快,甚至是來自key =>值對的最簡單記錄也是一個性能抽取器。

最後,我嘗試了在zend框架中實現的lucene,除了沒有更新的部分之外,它是非常接近理想的。

任何想法,任何人?

+0

你可能剛剛問過一個SQLite ORM。 – 2010-01-11 21:10:07

+0

我可以,但那不是我要找的。 SQLite確實通過聲明創建了一個存儲庫,但是表和字段管理與其他rdbms相同,這對我來說並不好。我真的不想處理數據庫和數據庫遷移,我不介意以性能付費。 – 2010-01-14 11:28:05

回答

1

我一直在與RedBean很好玩,它不是專爲flatfiles設計的,但運行在PDO上,因此爲它編寫sqlite模塊應該相對容易。不知道它是否能滿足您的需求,但絕對值得一看。

+0

真的很酷的項目,謝謝。我認爲我可以在我的項目中使用它,也許需要一天左右的時間來編寫SQLite連接器,但即使沒有SQLite,它也非常棒。 – 2010-01-10 06:11:52

+0

一年後,我幾乎全部使用redbean,如果你碰巧正在讀這個主題:使用REDBEAN !!!!!它絕對是令人討厭的,它是最棒的! – 2011-02-17 12:51:34

1

這裏有一些鏈接,你可能會發現有用:

此外,有你使用Berkeley DB的考慮?

DB extensions listed in the PHP Manual中的一些旨在用於類似平面文件的數據庫。


從你的描述好像PHP數組應該很好地工作:

  • 純PHP
  • 多個陣列,文件或存儲基於
  • 你的代碼是你的架構
  • 層次

您可以使用serialize()var_export()用於啓用文件存儲。

+0

我對txtSQL和gladius都很熟悉,但我也可以使用SQLite。我的問題是關於與正常關係數據庫的行爲**不同的持久性數據存儲。 Berkeley DB(或更確切地說,Berkeley DB XML)看起來很有前途,但它需要**購買**和**安裝**,這使我無法使用它。 – 2010-01-10 06:06:37

+0

@Nir:答案更新了,也許你應該試着描述你更詳細的內容。 – 2010-01-10 06:38:45

+0

數組工作到一定程度,當您有大量需要索引/搜索/排序的數據時,問題就開始了。我的理想解決方案就像下面的一個或多個:1)一個XML文件,我可以做我想做的事情,而沒有XML的性能問題。 2)我可以在沒有模式或預定義結構的情況下拋出對象的數據庫,然後能夠在所有對象上運行查詢,就好像它們都在同一個表中一樣3)redBean並不完美,但看起來非常酷支持的SQLite,我可能會說「問題解決了,我可以做這個工作」 – 2010-01-11 13:08:47