mongodb и php переход

Я использую opencart (фреймворк с открытым исходным кодом для электронной коммерции).

Он использует только базу данных mysql в качестве источника данных.

Однако, учитывая текущий трафик сайта, я уверен, что мы можем повысить нашу эффективность, используя noSQL (Mongodb). Это здорово, но вопрос в том, как бы я мог интегрировать Mongodb, чтобы использовать его с Mysql в унисон?

Я начал осматриваться и нашел Манданго ( 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() . "'"
    );
}

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 может не понадобиться. Вместо этого вы загружаете данные в объекты, а затем делаете все, что вам нужно делать с объектами.

Другие вопросы по тегам