我目前正在研究一个非常大的表(约1亿行,35列),它目前存储在SQL db中,但我正在运行的查询(它们各种各样)运行得非常非常慢..所以我得到了我应该转移到NoSQL db.问题是:
如何判断哪个(NoSQL)数据库最适合我?
如何将当前的SQL表移动到新的NoSQL方案?
或者我应该留在SQL中并进行微调?
更多细节:不会添加/删除行,这是历史数据,所有分析都将在该表上完成.计划对其进行各种查询.数据是数字的.
一些值得思考的东西:
100M行完全符合SQL的"甜蜜点".您可以通过x10增长,并且仍然可以确保SQL能够以相当重要的努力为您提供支持.
NoSQL并不是解决大规模性能问题的灵丹妙药.它提供了一系列权衡,经过精心规划,可以提供更好的结果.但是,如果您不完全理解SQL中的性能问题,那么在NoSQL环境中做出正确设计决策的机会很小.
NoSQL系统中常见的权衡之一是它们通常在查询时提供较少的灵活性,以换取模式管理的更大灵活性.你提到你的查询是"各种各样的" - 如果它们真的是变化的,或者更重要的是 - 经常变化 - 那么转移到NoSQL系统会让你陷入痛苦的世界.特别是如果您还不熟悉该技术.
底线 - 你没有做任何明显"超出"SQL功能的事情,你的问题可能更多地是由于低效的实现而不是任何固有的平台限制.迁移到NoSQL系统不会神奇地解决您的任何问题,并且可能会引入新的问题.
我经常使用具有9亿行的SQL Server 2012表.该表每2分钟添加一行,每天总计约200K.我可以查询此表并在几秒钟内返回行(使用聚簇索引/ PK).我还可以查询其中一个索引,并在几秒或更短的时间内返回结果.
因此,所有这一切都需要确保您的索引设置正确,并且正在使用!根据正在生成的查询计划检查您的查询,并确保正在进行搜索.
转移到NoSQL或类似的东西可能是有充分理由的.但是,由于您认为自己无法在SQL Server中获得良好的性能,因此在确保您已经完成了为提高性能所做的一切之前,这一点并不是一个很好的理由.