-1

opencart (電子商取引のオープンソース フレームワーク) を使用しています。

データ ソースとして mysql データベースのみを使用します。

ただし、現在のサイト トラフィックにより、 noSQL (Mongodb)を使用することで効率を上げることができると確信しています。それは素晴らしいことですが、問題は、Mongodb を統合して Mysql と一緒に使用する方法です。

私は周りを見回し始め、マッピング用の Mandango ( http://mandango.org/ ) を見つけ、doctrine よりも優れたパフォーマンスを発揮しました。

ただし、データをどのようにマッピングするかについては頭を悩ませることができません。ODM はオブジェクトを使用しているように見えますが、この場合にモデル オブジェクトを使用すると、生の SQL クエリに基づいていません。以下は顧客モデルメソッドの例です。

public function editCustomer($data) {
    $this->db->query(
        "UPDATE " . DB_PREFIX 
        . "customer SET firstname = '" . $this->db->escape($data['firstname']) 
        . "', lastname = '" . $this->db->escape($data['lastname']) 
        . "', email = '" . $this->db->escape($data['email']) 
        . "', telephone = '" . $this->db->escape($data['telephone']) 
        . "', fax = '" . $this->db->escape($data['fax']) 
        . "' WHERE customer_id = '" . (int) $this->customer->getId() . "'"
    );
}
4

1 に答える 1

2

私は PHP の専門家ではありませんが、MongoDB と MySQL の両方を使用するシステムを実行した経験があります。

データ アクセス オブジェクト用のインターフェイスを作成してから、MySQL または Mongo 用の特定の実装を用意することをお勧めします。例えば:

interface iCustomerDAO 
{ 
   public function getCustomer($id);
}
class MySQLCustomerDAO implements iCustomerDAO
{
   public function getCustomer($id) 
   {
      ...
      return $customer;
   }
}

次に、MySQL に対して読み取り/書き込みを行う実装と、MongoDB に対して読み取り/書き込みを行う実装を作成できます

ODM は必要ない場合があります。代わりに、データをオブジェクトにロードしてから、オブジェクトに対して必要なことを何でも行います。

于 2013-03-11T22:51:47.290 に答える