0

我正在开发一个项目,该项目使用 MongoDB 来存储事务数据,而 MySQL 则存储所有其他数据。由于各种原因,我们正在考虑从 MongoDB 迁移到 8.0 版本的 MySQL xDevApi 的可能性。为了准备这种可能性以及简化学习曲线以及其他数据库注意事项,我正在考虑创建一个包装器,它允许我们切换数据库后端,而无需更新与 MongoDB 接口的代码中的所有位置.

我已经有一个大纲,但不确定这是最好的方法。我认为这是一个不错的开始,我只是不确定文件/文件夹结构。

当前文件/文件夹结构如下:

\DocumentStore
  abstract class DocumentStoreQueryBuilder
  interface IDocumentStore
  interface IDocumentStoreConnection
\DocumentStore\Mongo
  class Connection implements IDocumentStoreConnection
  class Query implements IDocumentStore
  class QueryBuilder extends BuilderAlias

我的想法是使用类似于关系数据库的语言来帮助那些来自 RDB 背景的人(大多数将进入项目的人)的初始学习曲线。

我确信有更好的方法来组织事情,但老实说,我对文档存储一般不太熟悉。

这是与我迄今为止所拥有的代码一起使用的代码。

在从需要连接的所有文件调用的连接文件中。

$mgdbdoc = new DocumentStore\Mongo\Connection();
$connectionString = $mgdbdoc->buildConnectionString($settings);
$mgdbdoc->connect($connectionString);

$collection = new DocumentStore\Mongo\Query($mgdbdoc);

定义要操作的集合。如果有必要,这可能会被保存到每个集合的唯一类名中。

$collection->setCollection('transactions');

必要时随时调用。

$result = $collection->insert($document);

$result = $collection->filter($filter)->limit(2)->descending('_id')->select();

我还没有加入更新和删除功能,而且和/或功能被证明是困难的,但我能做到。

我的问题是关于这个项目的任何建议。关于继续前进的任何想法?我无法像 PDO 那样找到多个 NoSQL 数据库的包装器。我将不胜感激任何想法或建议。

4

0 回答 0