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