RavenDB安装在企业设置与后备计划



我正在考虑/评估在我们公司计划构建的企业应用程序中使用RavenDB,我对这个数据库系统的了解不是很广泛。所以我想知道是否有人可以帮助我以下方面,

  1. RavenDB可以处理几百万条记录在一对夫妇的表,这是相互关联的(连接)与合理的查询时间?

  2. 系统每天将创建几千个表项,应该有一种方法将这些表中的旧记录批量移动到备份表中(最好使用另一个数据文件),以便在这些关键表上有一个行数上限。所以这个数据库支持批量数据移动操作?

  3. 这个数据库能够利用多处理器服务器吗?

  4. 它提供了什么类型的数据恢复选项(是否可以进行热备份)?

  5. 如果事情出了问题,有没有一种方法可以切换到另一个数据库系统,而不需要从头开始编写整个数据层(例如,如果我们使用MySQL,我们可以切换到oracle,没有太多麻烦的NHibernate)?

总的来说,我的印象是你正在考虑构建一个非常面向行列的报表应用程序。一般来说,RavenDB可能不是适合这种应用程序的技术,但您的情况可能会有所不同。

1。RavenDB能在合理的查询时间内处理几个相互关联(连接)的表中的数百万条记录吗?

在数百万条记录上是。始终测试以确定,并考虑向外扩展,即分片,到多个实例以分散负载。

没有"相关表和连接"的概念。这不是RavenDB的工作方式(您也不希望它这样)。请阅读RavenDB神话部分的Grokking文档数据库,了解为什么会这样。根据你的描述,你可以做你想做的事。您需要非常熟悉RavenDB进行索引的方式。

2。系统每天将创建几千个表项,应该有一种方法将这些表中的旧记录批量移动到备份表中(最好使用另一个数据文件),以便在这些关键表上有一个行数上限。所以这个数据库支持批量数据移动操作?

可能不需要移动旧记录。也许把它们留在原地,在别处写新的。如果愿意,您可以利用Raven中的分片将数据根据时间划分为段。当您不再需要旧数据时,请删除包含旧数据的分片(将其移动到"备份数据库")。

您还可以利用Index Replication并将索引的结果推送到另一个存储和Expiration Bundle中以自动删除旧文档。

3。这个数据库能够利用多处理器服务器吗?

是的。

4。它提供了哪些类型的数据恢复选项(是否可以进行热备份)?

是的,它是基于Esent的,并继承了它执行热备份的能力。

5。如果事情出了问题,有没有一种方法可以切换到另一个数据库系统,而不需要从头开始编写整个数据层(例如,如果我们使用MySQL,我们可以切换到oracle,没有太多麻烦的NHibernate)?

如果是另一个文档数据库,则可能。但是看看上面的第一点。您将很难将文档和关系数据库视为可立即交换的技术。如果您向上移动一个抽象层,持久性就是持久性,但我认为您提出这个问题的方式,答案将是"否"。