【问题标题】:mongodb and php transition [closed]mongodb和php转换[关闭]
【发布时间】:2013-02-25 03:58:21
【问题描述】:

我正在使用 opencart(电子商务的开源框架)。

它仅使用 mysql 数据库作为其数据源。

但是由于当前的站点流量,我相信我们可以通过使用 noSQL (Mongodb) 来提高我们的效率。太好了,但问题是我将如何着手和集成 Mongodb 以将它与 Mysql 一起使用?

我开始环顾四周,发现 Mandango (http://mandango.org/) 用于映射,并且性能比学说更好。

但是,我无法弄清楚如何映射数据。我看起来像 ODM 使用对象,但是当我在这种情况下使用我的模型对象时,那不是基于原始 SQL 查询。给你一个想法,目前 Opencart 有具有原始 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() . "'"
    );
}

【问题讨论】:

    标签: php mongodb opencart odm nosql


    【解决方案1】:

    我远不是 PHP 专家,但我有运行同时使用 MongoDB 和 MySQL 的系统的经验。

    我建议为您的数据访问对象创建接口,然后为 MySQL 或 Mongo 提供特定的实现。例如:

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

    然后你可以有一个读/写 MySQL 的实现一个读/写 MongoDB 的实现。

    可能不需要 ODM。相反,您将数据加载到对象中,然后对对象执行任何您需要执行的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-10
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      相关资源
      最近更新 更多