2013-03-09 65 views
-1

我正在使用opencart(电子商务的开源框架)。mongodb和php转换

它只使用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() . "'" 
    ); 
} 

回答

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。相反,您可以将数据加载到对象中,然后执行您需要的任何对象。