我正在考虑/评估将RavenDB用于我们公司计划构建的企业应用程序,我对这个数据库系统的了解并不是很广泛。所以我想知道是否有人可以帮助我了解以下几个方面,
RavenDB可以处理几个表中几百万条记录,这些记录彼此相关(联接)并且查询时间合理吗?
系统每天会创建几千个条目表,应该有一种方法可以将这些表中的旧记录批量移动到备份表(最好可以使用另一个数据文件),这样就有了限制这些关键表上的行数。那么这个db支持批量数据移动操作吗?
此数据库是否能够利用多处理器服务器?
它提供了哪种数据恢复选项(是否可以进行热备份)?
如果出现问题,有没有办法切换到另一个数据库系统,而无需从头开始编写整个数据层(例如,如果我们使用MySQL,我们可以将其切换到oracle而不会对NHibernate造成太大麻烦)?
答案 0 :(得分:4)
总的来说,我的印象是您正在考虑构建一个非常以行为列的报表应用。一般来说,RavenDB可能不适合此类应用,但您的里程可能会有所不同。
<强> 1。 RavenDB可以处理几个表中几百万条记录,这些记录彼此相关(联接)并且查询时间合理吗?
数百万条记录是的。始终测试以确定,并考虑向外扩展,即分片,以扩展负载。
关于“相关表和联接”概念的否定。这不是RavenDB的工作原理(你不希望它)。阅读有关Grokking文档数据库的RavenDB Mythology部分,了解其原因。但是,根据您的描述,您可以做您想做的事情。您需要非常熟悉RavenDB索引的方式。
<强> 2。系统每天会创建几千个条目表,应该有一种方法可以将那些表中的旧记录批量移动到备份表(最好可以使用另一个数据文件),这样就可以对行数设置上限在这些关键表上。那么这个db支持批量数据移动操作吗?
可能没有必要移动旧记录。或许把它们留在原地并在其他地方写新的。如果您愿意,您可以利用Raven中的分片将数据分区为基于时间的段。当您不再需要旧数据时,请删除包含它的分片(将其移至“备份数据库”)。
您还可以利用索引复制并将索引的结果推送到另一个商店,并将Expiration Bundle自动删除旧文档。
第3。该数据库是否能够利用多处理器服务器?
是
<强> 4。它提供了哪种数据恢复选项(是否可以进行热备份)?
是的,它基于Esent并继承了执行热备份的能力。
<强> 5。如果出现问题,有没有办法切换到另一个数据库系统,而无需从头开始编写整个数据层(例如,如果我们使用MySQL,我们可以将其切换到oracle,而不会对NHibernate造成太大麻烦)?
如果它是另一个文档数据库,也许。但请参见上面的第一点。您将很难将文档和关系数据库视为可立即交换的技术。如果你向上移动一层抽象,持久性就是持久性,但我认为你提出这个问题的方式,答案就是“不”。