对于使用MongoDB作为数据库系统而不是标准MySQL或MariadB的流行WordPress插件的使用存在已知问题和注意事项。由于WordPress固有地构建了与MySQL数据库一起使用的,因此使用MongoDB nosql数据库需要进行大量的技术调整,并且可能会影响与许多插件和主题的兼容性。
首先,WordPress Core和插件和主题的广泛生态系统在很大程度上依赖于针对MySQL等关系数据库量身定制的SQL查询。 MongoDB在基于文档的NOSQL数据模型上运行,该模型不支持SQL语法,从而导致许多发出SQL查询的插件在与MongoDB一起使用时会失败或不可预测。许多WordPress插件都采用关系数据结构,交易,联接和酸合规性特征,但在MongoDB中不存在或不同,这导致了兼容性挑战。
一个主要的技术挑战是由于传统上在多文档级别(尤其是在第4版之前)不完全符合酸的事实。依靠多个表或复杂连接的原子交易的WordPress插件可能会遇到数据完整性问题或当将MongoDB用作后端时行为不一致。 MongoDB确实在单个文档级别提供了原子,但是许多WordPress插件期望多桌交易,MongoDB无法固有地提供。
此外,管理用户身份验证,角色和功能的插件,或者操纵复杂的元数据结构在MySQL表中存储的复杂的元数据结构可能会破坏,因为MongoDB处理数据的处理方式非常不同。例如,在用户元列或元表中执行复杂查询或汇总数据的插件可能无法正常运行,因为没有直接的mongoDB等效于SQL JONINS或RELITATION schemas。某些插件页面或设置可能无法显示数据,因为他们的预期查询不能在mongoDB上执行。
试图将MySQL查询转换为MongoDB命令的转换或适配器插件存在,但通常受到限制和不完整。此类插件只能处理基本方案,并且需要仔细的手动测试和扩展自定义,以便在生产环境中可靠地工作。此外,维护这些插件很复杂,因为它们需要跟上不断发展的WordPress和MongoDB版本,并且并不总是支持高级WordPress功能,例如自定义帖子类型,分类法或多站点安装。
流行且复杂的WordPress插件(例如Yoast SEO)也在不使用传统MySQL设置的环境中表现出一些不稳定性或冲突,尽管大多数报告的问题来自插件冲突而不是直接的MongoDB不兼容。但是,值得注意的是,许多流行的插件根本不正式支持MongoDB,从而限制了它们在这种设置中的安全使用。插件开发人员通常不会针对非关系数据库设计,因此通常不使用MongoDB维护或测试兼容性。
在性能方面,虽然MongoDB可以提供可扩展性和灵活的模式设计等优点,但这些好处被将WordPress的体系结构和生态系统调整为NOSQL所带来的实际困难所抵消。一些开发人员建议采用替代方法,例如继续使用MySQL进行WordPress,同时利用MongoDB来用于特定的应用程序组件,例如Caching,键值存储或服务前端应用程序,而不是完全替换MySQL。
总之,流行的WordPress插件和MongoDB的已知问题包括:
- 由于SQL Reliance而引起的不兼容:大多数插件都期望MySQL后端并发出MongoDB无法执行的SQL查询。
- 缺乏关系数据处理:MongoDB基于文档的模型与对关系数据,加入和插件交易的期望发生冲突。
- 部分酸支持:MongoDB中的有限交易支持可能会在期望完全酸合规性的插件中引起数据一致性问题。
- 插件功能断开:处理用户角色,元数据和复杂查询的插件通常会失败或显示丢失的数据。
- 需要复杂的迁移和适应性:试图桥接MySQL和MongoDB的插件通常仅部分工作,需要进行大量测试。
- 缺乏官方支持:主要插件很少提供官方的MongoDB支持,从而导致不支持或越野车的行为。
- 在非标准环境中的插件冲突和不稳定性:在非常规设置中使用时,某些插件(例如Yoast SEO)会出现稳定性问题。