【问题标题】:RavenDb and MultiTenancyRavenDb 和多租户
【发布时间】:2011-09-09 16:27:12
【问题描述】:

我已经研究了 RavenDb 并玩了一段时间,并开始研究 MultiTenancy。多租户的 Ayendes 示例如下所示:

using(var store = new DocumentStore
{
    Url = "http://localhost:8080"
}.Initialize())
{
    store.DatabaseCommands.EnsureDatabaseExists("Brisbane");

    store.DatabaseCommands.EnsureDatabaseExists("Melbroune");
    store.DatabaseCommands.EnsureDatabaseExists("Sidney");

    using (var documentSession = store.OpenSession("Brisbane"))
    {
        documentSession.Store(new { Name = "Ayende"});
        documentSession.SaveChanges();
    }
}

我不知道每个数据库是如何存储的,因此有一个问题:这适用于拥有大量租户的大型应用程序吗?

【问题讨论】:

  • 仅供参考 - 如果没有 'Raven.Client.Extensions' 的 using 指令,'EnsureDatabaseExists' 将无法工作。我很难找到这些信息。

标签: ravendb multi-tenant


【解决方案1】:

查看文档的第一段和最后一段 (v2.5 | v3.0)。

RavenDB 的数据库在设计时考虑了多租户,并且 意味着在单个服务器上支持大量数据库。在 为了做到这一点,RavenDB 只会保持活动数据库打开。如果 您第一次访问数据库,该数据库将被打开 并开始,因此对该数据库的下一个请求不必付费 打开数据库的成本。但是如果一个数据库还没有 访问一段时间后,RavenDB 会清理所有关联的资源 使用数据库并关闭它。

这允许 RavenDB 管理大量数据库,因为在 在任何给定时间,只有活动数据库实际占用 资源。

所以是的,它会支持它,每个数据库都将存储在磁盘上的单独文件夹中。

【讨论】:

  • 进一步扩展,默认情况下,我们将租户存储在 Tenants\TenantName 文件夹中,与主数据库 Data 文件夹相邻。
【解决方案2】:

实现多租户(加上混合组合)有 3 个基本选项:

在 RavenDB 中一切都很好(最初的问题是关于选项 #2)。当然,具有完全隔离租户的选项 #1 更安全,但从长远来看,其他选项可能会变得更便宜,而选项 #3 是三者中最实惠的(从长远来看)。

查看这些资源:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 2018-06-14
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多