database-design - 带有回退计划的企业设置中的 RavenDB 设置

标签 database-design ravendb

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

  1. RavenDB 能否以合理的查询时间处理彼此相关(连接)的几个表中的几百万条记录?

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

  3. 此数据库是否能够利用多处理器服务器?

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

  5. 如果出现问题,是否有一种方法可以切换到另一个数据库系统而无需从头开始编写整个数据层(例如,如果我们使用 MySQL,我们可以将其切换到 oracle 而无需使用 NHibernate)?

最佳答案

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

<强>1。 RavenDB 能否以合理的查询时间处理彼此相关(连接)的几个表中的几百万条记录?

是的,有数百万条记录。始终进行测试以确保确定,并考虑向外扩展(即分片)到多个实例以分散负载。

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

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

可能没有必要移动旧记录。也许将它们留在原处并在其他地方写新的。如果您愿意,您可以利用 Raven 中的分片根据时间将数据分成多个段。当您不再需要旧数据时,删除包含它的分片(将其移至您的“备份数据库”)。

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

<强>3。此数据库是否能够利用多处理器服务器?

是的。

<强>4。它提供了什么样的数据恢复选项(是否可以进行热备份)?

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

<强>5。如果出现问题,是否有一种方法可以切换到另一个数据库系统而无需从头开始编写整个数据层(例如,如果我们使用 MySQL,我们可以将其切换到 oracle 而无需使用 NHibernate)?

如果它是另一个文档数据库,也许。但请参见上面的第一点。您将很难将文档和关系数据库视为可立即交换的技术。如果你向上一层抽象,坚持就是坚持,但我认为你表达这个问题的方式,答案是“不”。

关于database-design - 带有回退计划的企业设置中的 RavenDB 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7696727/

相关文章:

database - 避免数据库表中的重复地址

database-design - 完全可审计的数据模型的最佳实现?

RavenDB Multi-Tenancy : whats the realistic upper limit of number of sessions on a single instance?

sql - 对于 PostgreSQL 表来说多大算太大?

mysql - 对于这种情况,您会推荐一个查找表吗?

database-design - 可扩展 Web 表单的数据模型

c# - 使用 Ravendb 批量删除

amazon-s3 - AppHarbor 和 Amazon S3 的良好日志记录策略

.net - RavenDB:如何进行简单的 map/reduce 聚合

nosql - 查询产品目录 RavenDB 商店以获取任意产品集合的规范聚合