Удалить одну базу данных ravendb, пока ravendb работает с другими базами данных

Есть ли способ удалить все данные из одной базы данных, пока RavenDB все еще работает, на нем размещены другие базы данных?

В производственной среде, где RavenDB размещает несколько баз данных для разных клиентов, недопустимо останавливать RavenDB, чтобы удалить данные из одной базы данных. Необходимо ли для этого индивидуально разрабатывать инструмент для удаления документов по отдельности?


person Stephan Møller    schedule 17.08.2011    source источник


Ответы (3)


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

person Ayende Rahien    schedule 17.08.2011
comment
Я не уверен, правильно ли я понял. Я могу удалить описывающий документ, и после этого ravenDB снимет свои блокировки с связанных файлов базы данных, и тогда я смогу удалить файл базы данных вручную? - person Stephan Møller; 18.08.2011
comment
Как удалить документ, описывающий базу данных? Есть ли где-нибудь для этого документация? - person Mike; 03.07.2012
comment
Перейдите в базу данных по умолчанию, вы увидите там документ. - person John Fisher; 08.10.2012

В версии 2.0.3 (возможно, даже в предыдущих версиях) студия вызывает следующую конечную точку http для удаления базы данных:

/ admin / databases / nameOfYourDatabase? hard-delete = true
? hard-delete = true не является обязательным.

На основе исходного кода студии я создал такую ​​функцию:

    public void DeleteDatabase(string name, bool hardDelete = false)
    {
        if (string.IsNullOrEmpty(name))
            throw new ArgumentNullException("name");

        var databaseCommands = _documentStore.DatabaseCommands;
        var relativeUrl = "/admin/databases/" + name;

        if (hardDelete)
            relativeUrl += "?hard-delete=true";

        var serverClient = databaseCommands.ForSystemDatabase() as ServerClient;
        if (serverClient == null)
            throw new ApplicationException("Please use a more intelligent exception here");

        var httpJsonRequest = serverClient.CreateRequest("DELETE", relativeUrl);
        httpJsonRequest.ExecuteRequest();
    }
person ms007    schedule 28.03.2013

Я хочу обновить ваше решение, это единственное решение для «удаления» базы данных.

На самом деле в новой версии (2.0) RavenDB, которая все еще нестабильна, вы можете удалить базу данных с новой версией студии.

Вы можете скачать его здесь: http://hibernatingrhinos.com/builds/ravendb-unstable-v2.0/

Я надеюсь, что это поможет вам получить хороший ответ Айенде.

С уважением, Дарио

person rdarioduarte    schedule 25.01.2013