7

我知道在该主题中提出了类似的问题,但我仍然没有看到任何人完全包含我的所有请求。

我首先要说我只有 RDBMS 方面的经验,所以如果我对 NoSQL 有任何错误,我很抱歉。

我正在创建一个可以保存大量审计日志(大约 1TB)的数据库。

我将它用于:

  1. 快速数据写入(一直在写入大量的审计日志)

  2. 搜索 - 搜索审计数据(特定用户在特定时间或特定操作执行的搜索操作......数据库应该支持非常快速地搜索任何“列”)

  3. 分析和报告 - 生成数据的每日、每周、每月报告(它们目前是预定义的。如果它们更具动态性,是否会影响我应该选择的解决方案?)

可靠性(支持故障转移或任何类似功能)、可扩展性(如果我从 1TB 增加到 2TB、10TB 或 100TB - 是否有任何解决方案不能支持这种数据量?)当然还有性能(在使用中)我指定的案例)对我来说非常重要。

我知道 RDBMS,这将是我开始的简单方法,但我真的担心一段时间后,数据库根本跟不上步伐。

我的问题是我应该选择 RDBMS 还是 NoSQL 解决方案,为什么?如果是 NoSQL 解决方案,由于它们如此不同,您认为哪一个适合我的需求?

4

1 回答 1

10

一般来说,这里没有正确或错误的答案。

快速数据写入,任何一种解决方案都可以,尽管您没有说明每秒存储的容量。两种解决方案都有需要注意的地方。

搜索(非常快速)所有列。对于较小的卷,比如几百 Gb,那么任何一种解决方案都可以(假设熟练的人把它放在一起)。你实际上并没有说你搜索的速度/频率,所以如果它是每分钟很多次,这个考虑变得更加重要。快速搜索通常会降低快速写入大量数据的能力,因为搜索所需的索引需要更新。

审核记录通常具有时间部分,因此与搜索所有记录相比,受时间限制的搜索(例如最近 7 天内)将显着加快搜索时间。

报告。当您达到 100Tb 时,您将需要一些真正的技巧或大量预算来获得快速报告。对于静态报告,您可能最终会创建一个程序来一次生成多个报告以节省 I/O。动态报告将是一个棘手的问题。

我的意见?既然您知道 RDBMS,我会从它作为一种方法开始并提供解决方案。这为您赢得了时间来了解您将遇到的真正问题(SO 上的许多人都热衷于过早的优化)。在此初始时间范围内,您可以开始选择 nosql 解决方案并学习它们。我在这里假设您想运行自己的硬件/数据库,如果您想使用云类型的解决方案,那么请立即使用它们。

于 2013-03-14T19:45:30.727 回答