0

我正在升级一个将使用两种不同数据库类型的 web 应用程序。现有数据库是 MySQL 数据库,与当前系统紧密集成,而 MongoDB 数据库用于扩展功能。新功能还将在很大程度上依赖 MySQL 数据库来获取环境变量,例如当前用户、内容等信息。

虽然我知道我可以独立组装查询,但它让我想到了一种方法,可以使查询的构建更加简单(只是为了在构建时更容易阅读,一旦完成,转换回硬编码查询),这将需要一个包含以下内容的封装对象:

  • 正在选择什么数据(包括功能派生数据)
  • 源(包括连接数据,我知道连接对于非关系数据库来说不是一个好主意,但最好有这个设施以防万一,以后可以将其重新写入两个查询以提高性能)
  • where 和有条件(存储为它们自己的对象类型,以便以后可以处理它们,可能包括可以由任何使用它的数据库解释的其他选择查询)
  • 订单
  • 分组
  • 限制

然后可以将此数据传递给接口适配器,该接口适配器可以构建和执行查询,以数组、对象或任何所需的形式返回它。

虽然这听起来不错,但我不知道是否存在这样的代码。如果是这样,任何人都可以向我指出,如果没有,是否有任何关于开展的类似项目的资源可以让我继续工作并构建一个基本版本?

我知道这是一个复杂的库,但过去几天我一直在进行此更新,并且不断地来回切换有时让我感到困惑并允许发生错误

4

1 回答 1

0

我会研究 SQL 语法之类的东西:http ://www.h2database.com/html/grammar.html

让您了解应该如何构建查询。

您可以研究现有的 LINQ (C#) 库:https ://code.google.com/p/linqbridge/

甚至可以查看有关 FQL(Facebook 的查询语言)的链接:https ://code.google.com/p/mockfacebook/issues/list?q=label:fql

就像您已经知道的那样,这是一个难题。让它高效运行将是一个巨大的挑战。也许考虑将所有数据从 MySQL 和 Mongo 移动到具有所有数据副本的第三个数据存储,然后针对该数据运行查询?将所有写入复制到 Redis 或 Elastic Search 之类的东西,然后在那里写下您的查询?

不管怎样,祝你好运!

于 2013-06-04T22:08:14.990 回答