2012-11-25 23 views
6

我有一个关系数据库的应用程序需要改变,以保持更多的数据。我的问题是只有2个表将存储更多的数据(高达数十亿条),并且一个表通过fk“链接”到其他表。我可以放弃这些表格的关系模型。 我想保持数据库的其余部分不变,只更改这两个表。我也在这些表上做了很多的查询 - 从简单的选择到分组和子查询 - 在那里出现更多的问题。SQL NOSQL混合可能与否?

我与NoSQL的经验是有限的,所以我要问哪一个(如果有的话),它的兄弟姐妹的适合我的需要: - 庞大的数据 - 复杂的查询 - 与SQL数据库的集成。这不像前两个那么重要,如果它值得的话,我可以将我的整个数据库迁移到相当的数据库。

谢谢

+1

大部分通常归类为“NoSQL”的技术不是彼此兄弟姐妹,而是兄弟姐妹,而不是SQL数据库的兄弟姐妹。 – Philipp

回答

3

关系数据库和NoSQL方法都可以处理有数十亿数据点的数据。利用所提供的信息,很难做出有意义的具体建议。这将有助于更多地了解您对数据的处理方式,您的硬件和网络拓扑结构等选项。

我假设您目前正在使用关系数据库,您可能已经查看分区或以其他方式构建较大的表,以便查询性能令人满意。这个活动本身可以是不平凡的,但恕我直言,一个优化的数据库设计与优化的SQL可以采取很长的路要走,因为有明确的需要探索替代方案。但是,如果您的数据使用看起来像写一次,经常阅读,加入依赖关系是可管理的,并且您需要对数据集执行一些聚合,那么您可能会开始寻找其他方法,如Hadoop或MongoDB - 然而,这些选择在性能,功能,平台要求,延迟等方面都会带来折衷。在查询级别上关于NoSQL存储库和SQL数据库之间的集成的特定问题可能无法实现,而这两者之间没有数据的重复。例如,MongoDB不喜欢连接(http://stackoverflow.com/questions/4067197/mongodb-and-joins),所以你必须设计你的持久性模型,这可能涉及到数据的重复。

我试图做的一点是 - 确定“正确”的方法将取决于您的具体目标和约束。

+0

目前该应用程序正在MySQL上运行。数据库位于单个节点上,但最多可以有3台机器。我正在运行的查询是复杂的,并且可能让他们涉及表中的所有行(对于大集团来说)。根据我的经验,MySQL无法在合理的时间内处理这种操作(每个查询少于1分钟),这就是我寻找替代品的原因。 – qtm