RavenDb与多租户

RavenDb与多租户,ravendb,multi-tenant,Ravendb,Multi Tenant,我已经和RavenDb一起研究和玩了一段时间,并开始研究多租户。多租户的Ayendes示例如下所示: using(var store = new DocumentStore { Url = "http://localhost:8080" }.Initialize()) { store.DatabaseCommands.EnsureDatabaseExists("Brisbane"); store.DatabaseCommands.EnsureDatabaseExists

我已经和RavenDb一起研究和玩了一段时间,并开始研究多租户。多租户的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();
    }
}

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

请参阅文档的第一段和最后一段(|)

RavenDB的数据库设计时考虑了多租户,并且 旨在支持单个服务器上的大量数据库。在里面 为了做到这一点,RavenDB将只保持活动数据库的打开状态。如果 首次访问数据库时,该数据库将被打开 并且启动了,所以下一个对数据库的请求就不必付费了 打开数据库的成本。但是如果数据库还没有建立起来 访问一段时间后,RavenDB将清理所有关联的资源 使用数据库并关闭它

这使得RavenDB能够管理大量数据库,因为 在任何给定的时间内,只有活动数据库实际占用 资源


因此,是的,它将支持它,并且每个数据库将存储在磁盘上的一个单独文件夹中。

要扩展此功能,默认情况下,我们将租户存储在tenants\TenantName文件夹中,与主数据库数据文件夹相邻。仅供参考-如果没有“Raven.Client.Extensions”的using指令,“EnsureDatabaseExists”将无法工作。我很难找到这些信息。