我知道在这个问题上提出了类似的问题,但我还没有看到任何完全包含我所有请求的人。
我首先要说的是我只有RDBMS的经验,所以如果我对NoSQL有任何错误,我很抱歉。
我正在创建一个包含大量审核日志(大约1TB)的数据库。
我正在使用它:
快速写入数据(大量审计日志一直写入)
搜索 - 搜索审核数据(由某个用户执行的搜索操作,在特定时间或某个操作...数据库应该支持非常快速地搜索任何'列')
Analytics&报告 - 生成每日,每周,每月的数据报告(它们是预先定义的......如果它们更具动态性,是否会影响我应该选择的解决方案?)
可靠性(支持故障转移或任何类似功能),可扩展性(如果我增长到1TB以上,2TB,10TB或100TB - 任何解决方案都不能支持这么多数据吗?)当然还有性能(在我指定的用例中对我来说非常重要。
我知道RDBMS,这将是我轻松开始的方式,但我真的很担心,过了一段时间,数据库根本无法跟上节奏。
我的问题是我应该选择RDBMS或NoSQL解决方案吗?为什么?如果是NoSQL解决方案,因为它们是如此不同,你认为它们中的哪一个符合我的需求?
答案 0 :(得分:7)
一般来说,这里没有正确或错误的答案。
快速数据写入,任何一种解决方案都可以,但您没有说明您每秒存储的音量。这两种解决方案都需要注意。
在所有列上搜索(非常快)。对于较小的体积,比如几百Gb,那么任何一种解决方案都是好的(假设技术人员把它放在一起)。你实际上并没有说你搜索的速度有多快/经常,所以如果它每分钟多次,这个考虑变得更加重要。快速搜索通常会降低快速写入大量卷的能力,因为需要更新搜索所需的索引。
审计记录通常具有时间组件,因此与搜索所有记录相比,搜索时间受限(例如在过去7天内)将显着加快搜索时间。
报告。当你达到100Tb时,你需要一些真正的技巧或大预算来获得快速报告。对于静态报告,您可能最终会创建一个程序,一次生成多个报告以节省I / O.动态报告将是棘手的。
我的意见?既然您了解RDBMS,我将从它开始作为一种方法并提供解决方案。这可以让你有时间学习你将遇到的真正问题(许多SO都不热衷于过早的优化)。在此初始时间范围内,您可以开始选择nosql解决方案并了解它们。我假设您想要运行自己的硬件/数据库,如果您想使用云类型解决方案,请立即转到它们。