one abstraction layer (my proposal for)
| From: | Tomas V.V.Cox | Date: | Sun, 02 Dec 2001 04:53:12 +0000 |
| Subject: | one abstraction layer (my proposal for) | ||
| Groups: | php.pear.dev | ||
| Request: | Send a blank email to pear-dev+get-3280@lists.php.net to get a copy of this message | ||
I'm out of battles and want to explain my proposal for the idea of a new
abstraction layer that could benefit for all:
Goals
=====
1) User selects mode: speed or portability (default)
2) Speed:
2.1) Non critical features are included by demand
2.2) There is public access to the database resources, letting people
the chance to interact directly with native calls when he want
2.3) The more common database functions (connect, query and fetch)
will
be as lightweight as posible
2.4) C rewrite when stable
3) Portability:
3.1) All the features are avaible in all the backends (emulated when
posible and native is not avaible)
4) Features (in no special order)
4.1) Unified and Extreamly Easy OO API
4.2) Prepare/Execute
4.3) Secuencial & Non Secuencial Row Fetching
4.4) Quick data fetch (get*() methods)
4.5) LOB support
4.6) PEAR Error support and abstracted database error messages
4.7) Information: about the database internals, the results,
the errors
4.8) Datatype conversion functions
4.9) Data quoting (manual & automatic)
4.10) Limited queries
4.11) Sequences
4.12) Transactions
4.13) Results cache
4.14) SQL language builder/helper/parser (?)
4.15) Database Manager (create/drop of databases, tables, sequences,
...)
4.16) Strong and deep test suite
4.17) DocBook Manual, PHPDoc API, translations and annotated manual
4.18) Easy distribution/installation with the Pear Installer
Ideas Corner
============
* Pear DB as the base code reviwed for the speed requirements and opened
to plug-in features on demand.
* (4.5) LOB support exchanged from Metabase
* (4.8) Data Type conversion to be done by a more generic class
PEAR_DataType
(suitable to be used in other enviroments too, like xmlrpc, etc)
* (4.13) Results cache to be done by the PEAR_Cache class
* (4.15) Exchanged from Metabase
* Development open to any experienced developer willing to contribute,
the
code will reside in the PHP CVS and the communication in php-db or
pear-dev.
* Developers from other abstraction layer packages are very very welcome
* The credits will go for all the people who has or is contributing
* No backwards compatibility fright. PHP 4.1 could be the first
supported
version
* (4.16) A mix of: PHP tests/PHPUnit/Metabase Driver Conformance
* (4.17) All open
Margin notes:
- This is just my attempt to see the "DB_One" class done
- Maybe there is some part missing please say it
- Possible enhancements are welcome
- I, of course, make me volunteer
- I'll ignore flames or statement out of pure technical (please keep
them in
other thread or even better: privately)
- 80% usable in two-three months
2c's from my part,
Tomas V.V.Cox