looking for a db abstraction/substitute that actually works

i am looking for a form of data storage that will answer a few requirements. i realize these requirements are non-standard, and for now i'm using activerecord and ORM solutions like everyone else, but this is my "holy grail" - if you know of anything like this, i would be eternally grateful:

  1. pure PHP
  2. multiple repositories, preferably file based for portability, where i can instantiate by telling it "use repository [X]" - i don't want to pre-create repository [X], if i reference it, it exists.
  3. zero database configuration - i don't want to create tables or export SQL dumps, if it's referenced in my code, it needs to be in the database, auto-created without any fuss, my code is my schema
  4. hierarchical, not relational, ideal structure would be just a freeform, schema-less XML, but since XML performs horribly with large trees, it can't simply be an XML file.

i have experimented with flat XML storage (with xpath and xquery) but it gags on a mid-sized repository, and cripples the application.

i have also experimented with key=>value pairs dropped into a SQLite database with a single generic table, but that gags even faster, and re-forming even the simplest record from key=>value pairs is a performance decimator.

finally, i experimented with lucene as implemented in the zend framework, which was pretty close to ideal, apart from the no-update part.

any ideas, anyone?


I've been having great fun with RedBean, it's not quite designed for flatfiles, but runs on PDO, so it should be relatively easy to write a sqlite module for it. Not sure if it will work for your needs, but definitely worth taking a look at.

Here are some links you may find useful:

Also, have you considered using Berkeley DB?

Some of the DB extensions listed in the PHP Manual are intended to be used on flat-file like databases.

From your description it seems like PHP arrays should work perfectly:

  • pure PHP
  • multiple arrays, file or memory based
  • your code is your schema
  • hierarchical

You could use serialize() or var_export() functions to enable file storage.

Need Your Help

How to import a Java program into Eclipse?

java eclipse import manifest

I have some java source code. It an just an archive which is four folders.

Difference between markerclusterer.js, markerclusterer_compiled.js and markerclusterer_packed.js

jquery jquery-plugins markerclusterer

I see this a lot in jquery plug-ins. what I know is that markerclusterer.js is human readable code but the difference between the two second files is not quite clear. can anyone explain to me the

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.