RavenDb überprüft, ob ein Index existiert

8

Wie überprüfe ich, ob ein Index existiert? - vor dem Anruf:

%Vor%

Bei allen Beispielen, die ich gesehen habe (einschließlich derjenigen im Beispielprojekt), wurde der Index jedes Mal neu erstellt, wenn der Client gestartet wird, was nicht richtig erscheint.

Was ist die allgemeine Strategie? Es scheint, als ob es die normale CRUD-Operation gibt, dann gibt es Administrationsbefehle wie das oben genannte. Erstellen Leute einfach eine Konsolen-App, die den Admin ausführt und diese separat von der Haupt-App bereitstellt / ausführt?

    
Alwyn 12.12.2012, 22:09
quelle

1 Antwort

18

Sie müssen nicht auf Existenz prüfen. Der Server vergleicht automatisch die von Ihnen gesendete Indexdefinition und prüft, ob sie bereits existiert. Wenn einer mit dem gleichen Namen und der gleichen Definition existiert, wird er alleine gelassen. Wenn einer mit demselben Namen existiert, aber die Definition sich geändert hat, wird der alte gelöscht und der neue erstellt.

Normalerweise würde man beim Start der Anwendung Indizes in derselben Anwendung erstellen. Für Web-Apps, die in global.asax und für Konsolen- / Desktop-Apps verwendet werden können, wäre dies nur der erste Teil des Startup-Codes.

Aber manchmal ist das nicht möglich, zum Beispiel, wenn Sie viele verschiedene Datenbanken haben, wie es oft Multi-Tenant-Anwendungen tun. In diesen Fällen würden Sie Indizes erstellen, wenn Sie jede Tenant-Datenbank erstellen, und Sie müssen möglicherweise beim Rollout eines Versionsupgrades weitere Indizes aktualisieren oder erstellen.

Auch sollte ich erwähnen, dass Sie Indizes auf verschiedene Arten erstellen können.

%Vor%

Es gibt ein paar andere, aber Sie bekommen die Idee.

Und nur um gründlich zu sein, wenn Sie wirklich nach der Existenz von Indizes suchen wollten, könnten Sie Folgendes verwenden:

%Vor%

Aber das wird nur anhand des Namens und nicht per Definition überprüft. Und du brauchst es nicht.

    
Matt Johnson 12.12.2012, 22:22
quelle

Tags und Links