2010-01-09 30 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