2011-09-09 15 views
9

Tôi đã xem và chơi xung quanh với RavenDb trong một thời gian và đã bắt đầu nhìn vào MultiTenancy. Ayendes mẫu cho multitenancy trông như thế này:RavenDb và MultiTenancy

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(); 
    } 
} 

Tôi không biết làm thế nào mỗi cơ sở dữ liệu được lưu trữ và do đó câu hỏi: Liệu rằng công việc cho các ứng dụng lớn với rất nhiều người thuê nhà?

+3

FYI - 'EnsureDatabaseExists' sẽ không hoạt động nếu không có chỉ thị sử dụng cho 'Raven.Client.Extensions'. Tôi đã có một thời gian rất khó tìm kiếm thông tin này. –

Trả lời

10

Xem đoạn đầu tiên và cuối cùng từ tài liệu (v2.5 | v3.0).

Cơ sở dữ liệu của RavenDB được thiết kế với tư cách thuê nhiều người và là có nghĩa là hỗ trợ số lượng lớn cơ sở dữ liệu trên một máy chủ. Trong để làm điều đó, RavenDB sẽ chỉ giữ cho cơ sở dữ liệu hoạt động mở. Nếu bạn truy cập cơ sở dữ liệu lần đầu tiên, cơ sở dữ liệu đó sẽ được mở và bắt đầu, do đó yêu cầu tiếp theo tới cơ sở dữ liệu đó sẽ không phải trả chi phí mở cơ sở dữ liệu. Nhưng nếu cơ sở dữ liệu không được truy cập một lúc, RavenDB sẽ dọn sạch tất cả các tài nguyên được liên kết với cơ sở dữ liệu và đóng nó.

Điều đó cho phép RavenDB quản lý số lượng lớn cơ sở dữ liệu, bởi vì tại bất kỳ thời điểm nào, chỉ các cơ sở dữ liệu hoạt động thực sự đang lấy tài nguyên .

Vì vậy, nó sẽ hỗ trợ và mỗi cơ sở dữ liệu sẽ được lưu trữ trong một thư mục riêng biệt trên đĩa.

+0

+1 cảm ơn thông tin – jgauffin

+1

Để mở rộng trên đó, theo mặc định, chúng tôi lưu trữ người thuê trong thư mục Tenants \ TenantName, tiếp giáp với thư mục Dữ liệu cơ sở dữ liệu chính. –