Извлечение записей из нескольких клиентов в RavenDB

#vb.net #ravendb

#vb.net #ravendb

Вопрос:

Я использую EmbeddableDocumentStore для получения записей, хранящихся в raven.

Ниже VB.NET код предназначен для доступа к данным raven

 Dim documentStore As EmbeddableDocumentStore = New EmbeddableDocumentStore()
documentStore.DataDirectory = "D:TestServer1"
documentStore.DefaultDatabase = "TestDB1"
documentStore.Url = "http://localhost:8585/"
documentStore.Initialize()
Dim session As Document.DocumentSession = documentStore.OpenSession()
Dim LineItems = session.Query(Of LineItem)()
  

Приведенный выше код извлекает записи из базы данных TestDB1, аналогично у меня есть база данных TestDB2

Теперь у меня есть два вопроса

  1. Как получить доступ ко всем записям из Server1.TestDB1.LineItem и Server1.TestDB2.LineItem

  2. Как получить доступ ко всем записям из Server1.TestDB1.LineItem и Server2.TestDB1.LineItem

Ответ №1:

Несколько вещей:

  • Вы должны открывать Using сеанс из состояния.

  • Когда вы это сделаете, вы можете передать имя базы данных в качестве параметра OpenSession методу.

  • Если вы регулярно работаете с несколькими базами данных, то вам, вероятно, следует передавать имя базы данных каждый раз, когда вы открываете сеанс, вместо назначения базы данных по умолчанию.

  • An EmbeddableDocumentStore выполняется в контексте процесса, выполняющего его, поэтому вы не подключаетесь к серверу. URL-адрес используется только при использовании обычного DocumentStore и подключении к экземпляру RavenDB, запущенному в другом месте — в этом случае DataDirectory он не будет использоваться.

  • Если вы используете DocumentStore и подключаетесь к серверам в другом месте, то вам понадобятся два отдельных экземпляра DocumentStore — один для Server1, а другой для Server2.

  • Однако нет никакого смысла запускать два отдельных EmbeddableDocumentStore экземпляра в одном процессе. Это сработало бы, но я не вижу никаких преимуществ.