we chose metabase for binarycloud (www.binarycloud.com) specifically for its maturity, relative simplicity, and the incredibly cool XML schema thing, which has saved me countless hours of crapwork :) I think PEAR's db class will eventually be good, but for now metabase beats is simply because it is _far_ more mature. I would recommend using metabase for your projects, I'd also recommend using binarycloud (we use metabase for database abstraction, and have a bunch of other code for building php apps) both will save you many hours of work :) -alex -- Alex Black, Head Monkey [EMAIL PROTECTED] The Turing Studio, Inc. http://www.turingstudio.com vox+510.666.0074 fax+510.666.0093 Saul Zaentz Film Center 2600 Tenth St Suite 433 Berkeley, CA 94710-2522 > From: [EMAIL PROTECTED] ("Manuel Lemos") > Newsgroups: php.general > Date: 5 Jan 2001 16:39:38 -0800 > Subject: Re: [PHP] DB portability > > Hello mwaples, > > On 03-Jan-01 11:19:53, you wrote: > >>>> I am looking at undertaking a very large project that will be handled >>>> initially in MySQL. Down the road we may choose a corporate db such as >>>> Oracle. My thought was since we will have thousands of lines of code to >>>> migrate to the new db, I could create a global script that is required by >>>> each individual script. >>>> >>>> This global script would alias typical database functions (connects, >>>> queries, etc...) to PHP's MySQL functions for the time being and I could >>>> adjust the alias in one central location if we switch from MySQL (I never >>>> foresee this happening but you never know). >>>> >>>> Can any of you see any repercussions of this central database alias >>>> script? >>> >>> I'm afraid things are not that simple. DBMS work in very different ways >>> that it isn't >>> just a matter of defining alias for each database. >>> >>> You may want to try Metabase. Not only it abstracts the access to the >>> database but it also abstracts the installation of the schemas so your >>> applications can be completely database independent. >>> >>> http://phpclasses.UpperDesign.com/browse.html/package/20 >>> >>> Manuel Lemos > > >> I haven't looked at metabase yet - but have a few questions - >> what about trigers and stored procedures - how does metabase deal with >> them ? > > It doesn't yet. There isn't much that can be done on portability about > things that vary so much between databases. Still that doesn't mean you > can't have triggers and stored procedures on applications that you access > with Metabase. > > >> Im just getting used to using postgresql, interbase, sybase as well as >> myql with php - using a simple class to extract and insert data - >> but I'm wondering how you deal with the different features of each >> database - Mysql lacks a number of things like triggers and stored >> procedures, sub ueries etc, would I lose any database specific >> functionality by going with metabase ? > > No, but if you used those database specific features your application would > no longer be that much portable. > > >> Would an application have to be simplified to work with MYsql and your >> class ? > > No, for instance Metabase has an interface to handle transactions. If you > try to use transactions on databases that don't support them, the > transaction handling calls will fail. > > OTOH, Metabase implements vital features that are not available in all > databases but the respective drivers emulate them if necessary. For instance > in MySQL you would use the LIMIT clause to restrict the range of rows that > a SELECT statement would retrieve. Metabase supports a similar feature in > all supported databases so you can rely on that feature in the applications > you use with Metabase regardless of the database you have. > > >> Also what advantage does metabase have over the one in PEAR ? >> If I use one wouldn't it be better to use one the ships with php as >> eventually it would be more wisely used ? > > Yes, a lot of people would think like that because they have no further > information. There are many things that PEAR-DB has still a lot to catch > on. > > To start, Metabase is not just a database abstraction to access databases. > It is also capable of installing and maintaining database schemas specified > in a portable format based on XML. If you change your schema definition it > will apply the changes without affecting any data added since the first > time it was installed or the last time it was changed. This alone provides > an higher level of database maintainability. > > Then Metabase assures real portability. For instance, if you want to > handle fields with dates, Metabase assures that you only have to handle > with one date format (ISO 8601 - YYYY-MM-DD). > > Then Metabase adds abstractions for many important things for Web > application development like the ability to define a row range that the > select statements will provide, like it was mentioned above. > > Metabase also provides a random access to query results where you can pick > data from any row at any order. As a consequence of this it is also always > able to fetch the number of rows of a query result even with databases that > do not have a function to support that. > > Other than that Metabase has now over 2 years of development and consequent > maturity. That can be demonstrated with the number of supported databases and > the number of driver conformance tests that are made available in a test > suite script that is provided with the package. > > > As a consequence of this there are several ready to use components being > made available here and there that rely on Metabase, like for instance this > Query result table display class that not only lists the result rows in an > HTML table that can be abritrarily customised but also presents links to go > to the Next, Previous, First, Last or any other page of results of a query > so you can browse over it. > > http://phpclasses.UpperDesign.com/browse.html/package/130 > > There are a whole lot more useful database programming components based on > Metabase. Stay tuned. > > > Regards, > Manuel Lemos > > Web Programming Components using PHP Classes. > Look at: http://phpclasses.UpperDesign.com/?[EMAIL PROTECTED] > -- > E-mail: [EMAIL PROTECTED] > URL: http://www.mlemos.e-na.net/ > PGP key: http://www.mlemos.e-na.net/ManuelLemos.pgp > -- > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > To contact the list administrators, e-mail: [EMAIL PROTECTED] > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]