Существуют известные проблемы и соображения, касающиеся использования популярных плагинов WordPress с MongoDB в качестве системы базы данных вместо стандартного MySQL или MariaDB. Поскольку WordPress по своей природе создан для работы с базами данных MySQL, использование базы данных MongoDB NOSQL требует значительных технических корректировок и может повлиять на совместимость со многими плагинами и темами.
Во -первых, WordPress Core и широкая экосистема плагинов и тем в значительной степени зависят от запросов SQL, адаптированных для реляционных баз данных, таких как MySQL. MongoDB работает на модели данных на основе документов NOSQL, которая не поддерживает синтаксис SQL, что приводит к тому, что многие плагины, которые выпускают SQL-запросы, не могут вести себя непредсказуемо при использовании с MongoDB. Многие плагины WordPress предполагают, что реляционные структуры данных, транзакции, соединения и характеристики соблюдения кислоты, родные для MySQL, но отсутствуют или отличаются в MongoDB, что приводит к проблемам совместимости.
Одна основная техническая задача возникает из-за того, что MongoDB традиционно не совпадал с кислотой на многодокументированном уровне (особенно до версии 4). Плагины WordPress, которые полагаются на атомные транзакции по нескольким таблицам или сложным соединениям, могут столкнуться с проблемами целостности данных или противоречивого поведения, когда MongoDB используется в качестве бэкэнда. MongoDB действительно обеспечивает атомность на одном уровне документа, но многие плагины WordPress ожидают многотоковых транзакций, что MongoDB не может предоставить по своей сути.
Кроме того, плагины, которые управляют аутентификацией пользователя, ролями и возможностями, или которые манипулируют сложными метададными структурами, хранящимися в таблицах MySQL, могут сломаться, поскольку MongoDB обрабатывает данные совершенно по-разному. Например, плагины, которые выполняют сложные запросы или агрегируют данные между пользовательскими мета-колоннами или после мета-таблиц, могут неправильно функционировать, поскольку не существует прямого монгодба, эквивалентного соединениям SQL или реляционных схем. Некоторые страницы или настройки плагинов могут не отображать данные, поскольку их ожидаемые запросы не могут быть выполнены на MongoDB.
Плагины преобразования или адаптера, которые пытаются перевести запросы MySQL в команды MongoDB, существуют, но часто являются ограниченными и неполными. Такие плагины могут обрабатывать только основные сценарии, и они требуют тщательного ручного тестирования и расширенной настройки, чтобы надежно работать в производственной среде. Кроме того, поддержание этих плагинов является сложным, потому что им необходимо идти в ногу с постоянно развивающимися версиями WordPress и MongoDB, и они не всегда поддерживают расширенные функции WordPress, такие как пользовательские типы публикаций, таксономии или многосайтные установки.
Популярные и сложные плагины WordPress, такие как Yoast SEO, также демонстрировали некоторую нестабильность или конфликты в средах, не использующих традиционные настройки MySQL, хотя большинство сообщенных проблем возникают из -за конфликтов плагинов, а не непосредственной несовместимости MongoDB. Тем не менее, стоит отметить, что многие популярные плагины просто официально не поддерживают MongoDB, ограничивая их безопасное использование в такой настройке. Разработчики плагинов обычно не разрабатывают для нереляционных баз данных, поэтому совместимость часто не поддерживается и не протестируется с помощью MongoDB.
С точки зрения производительности, в то время как MongoDB может предлагать такие преимущества, как масштабируемость и гибкая конструкция схемы, эти преимущества компенсируются практическими трудностями в адаптации архитектуры WordPress и экосистемы к NOSQL. Некоторые разработчики предлагают альтернативные подходы, такие как продолжение использования MySQL для WordPress при использовании MongoDB для конкретных компонентов приложения, таких как кэширование, хранилище ключей или приложения для обслуживания, вместо того, чтобы полностью заменить MySQL.
Таким образом, известные проблемы с популярными плагинами WordPress и MongoDB включают:
- Несовместимость из -за Reliance SQL: большинство плагинов ожидают бэкэнда MySQL и выдают запросы SQL, которые MongoDB не может выполнить.
- Отсутствие обработки реляционных данных: модели MongoDB на основе документов конфликтует с ожиданиями в отношении реляционных данных, соединений и транзакций в плагинах.
- Частичная кислотная поддержка: ограниченная поддержка транзакций в MongoDB может вызвать проблемы согласованности данных в плагинах, ожидающих полного соблюдения кислоты.
- Разбитые функциональные возможности плагина: плагины обрабатывают роли пользователей, метаданные и сложные запросы часто терпят неудачу или показывают недостающие данные.
- Требуется сложная миграция и адаптация: плагины, которые пытаются преодолеть MySQL и MongoDB, часто работают лишь частично и требуют обширных испытаний.
- Отсутствие официальной поддержки: крупные плагины редко предлагают официальную поддержку MongoDB, что приводит к неподдерживаемому или глючному поведению.
- Конфликты и нестабильность плагина в нестандартных средах: некоторые плагины, такие как Yoast SEO, испытывали проблемы с стабильностью при использовании в нетрадиционных настройках.