Oracle yardım MySQL

3 Cevap php

Ben bir PHP uygulaması mysql ve oracle kullanımı hakkında bir kaç soru var.

1)
Is it possible to code my PHP app to easily switch between these 2 databases? (Use MySQL for a year and then easily switch a "DB" file and it will run on Oracle?) I believe some large PHP projects have support for multiple database types.

2)
Does Oracle have something similar to phpMyAdmin?

3)
In general would one expect to see a performance gain in switching from mysql to oracle in a high traffic environment?

3 Cevap

Evet, ama düzgün yapmak inanılmaz derecede zor.

Veritabanı sürücüleri üzerinden takas pasta bir parçasıdır. Eğer PDO kullanıyorsanız, farklı bir DSN geçirerek farklı veritabanı sürücüleri bağlanabilir. PDO Ben unutuyorum ki SQLite, MySQL, PostgreSQL, Firebird, DB2, Microsoft SQL Server, Oracle, ODBC cihazlar, ve muhtemelen biraz daha için sürücüleri vardır. Eğer hazırlanmış tablolar ve benzeri kullanarak, makul kullanırsanız, hatta farklı veritabanları farklı öncelemeli kuralları olan endişelenmenize gerek yok.

Bu yeterli değildir.

MySQL ve Oracle SQL aynı lehçesini konuşan yok. Onlar aynı özelliklere ve yeteneklere sahip değilsiniz. Özellikleri bunlar farklı ortak çalışmaları var. Bunlar, farklı performans özelliklerine sahiptir. Indeksleme farklıdır. Alfabe farklıdır. , Tablolar başvuru nasıl gibi, ya da kullanabileceğiniz alan türlerinden ne tür hatta temel şeyler, veritabanları arasında büyük ölçüde farklılık gösterebilir.

Eğer tüm bu uzakta soyut başardı ve kullanabilirsiniz işlevsellik bazı ortak alt ile gelip bile, şans uygulama hem veritabanları yavaş olacaktır vardır. Bunlardan herhangi dışında iyi bir performans elde etmek için, onlar nasıl çalıştığını aşina olması gerekir, ve size sundukları özel özelliklerini kullanmak gerekir.

Her veritabanının tam yararlanarak, tipik veri modeli biraz değiştirmeyi gerektirir. Iki veritabanları gibi neredeyse farklı MySQL ve Oracle alabilirsiniz Özellikle birlikte.

Daha fazla ayrı veri modelleri, bu uygulama aslında hem veritabanları düzgün çalıştığını doğrulamak için olur daha zor olsun. Aynı zamanda, veri tabanı arasında veri geçirmek için daha zor hale gelir.

Bu kesinlikle imkansız değil, ama bir sürü iş var.

# 2 - Oracle 10g XE (normal faaliyetlerinden bir DB korumak için) birçok işlemi yapabilirsiniz hangi aracılığıyla web kullanıcı arayüzü var (Documentation burada). Standart sürümleri Enterprise Manager (documentation burada) var.

  1. There's the PDO extension that unifies the access of different databases on the API level. It is not a database abstraction, i.e. you have to write queries specific for the database system you're using. Switching from one dbms to another would most likely need another/adapted set of queries unless you're only doing very basic stuff (the parts of sql where all dbms vendors agree on). E.g. to select only the first three records of a query you could use (all queries untested):
    mysql: SELECT x,y,z FROM foo ORDER BY x DESC LIMIT 3
    oracle: SELECT * FROM ( SELECT x, y, z, row_number() over (ORDER BY x DESC) rn FROM foo ) WHERE rn <= 3 ORDER BY x desc
    t-sql: SELECT TOP 3 * FROM ( SELECT x,y,z FROM foo ORDER BY x )
    And PDO doesn't abstract that away.
    There are also a couple of database abstraction layers and object relational mappers for php, e.g. doctrine. They have their own syntax/object model that is then mapped (on the fly) to the query syntax of the actual dbms. You can switch between database systems without touching the code again (if all goes well). On the other hand you have to rely on the quality of the mapping. And you can't expect them to squeeze every bit of performance from each database system by using every tweak and special keyword in existence. You can usually influence or even manually change the "real" query. But then again you're back to optimizing the queries by hand for each dbms.

  2. ...

  3. Duffymo, belki, belki değil dediğim gibi. Bazı göze olmadan bir performans artışı beklemeyin. Sadece başka bir DBMS geçildiğinde bile plan en azından aynı performansı sahip değilsiniz. Mysql düzenleri ve sorguları biraz optimize edilmiş ise eşit kehanet performansı (ve tersi) ulaşmak için yapıyor bazı alabilir.