【问题标题】:RavenDB Setup in enterprise setup with fallback plan企业设置中的 RavenDB 设置和后备计划
【发布时间】:2012-07-26 03:44:39
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • RavenDB 是一个文档数据库,没有表,没有连接。与将所有 Order 记录放在一个位置,并将所有 OrderLines 放在一个完全不同的位置不同,使用文档数据库,Order 和 OrderLines 将一起存储在一个 Order 文档中。因此,要获得带有行的订单,您不需要 加入,因为它们都已经在同一个文档中。这是使用文档数据库的主要优势之一。
  • 实际上我应该重新评价这个问题以适应上下文,这就像有数百万个订单,每个订单都有很多订单行。而且我应该能够获取符合某些条件的 OrderLines 集。主要用于报告。

标签: database-design ravendb


【解决方案1】:

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

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

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

没有关于“相关表和连接”的概念。这不是 RavenDB 的工作方式(而且您不希望这样)。阅读 Grokking Document Databases 上的 RavenDB Mythology 部分,了解为什么会这样。但是,根据您的描述,您可能会做您想做的事。您需要非常熟悉 RavenDB 的索引方式。

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

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

您还可以利用索引复制并将索引结果推送到另一个存储和过期捆绑包以自动删除旧文档。

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

是的。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2013-01-01
    相关资源
    最近更新 更多