• Über Milvus
  • Los geht's
  • Konzepte
  • Benutzerhandbuch
    • Sammlungen
    • Schema & Datenfelder
    • Einfügen & Löschen
    • Indizes
    • Suche & Rerank
  • Modelle
  • Datenimport
  • Leitfaden für die Verwaltung
  • Werkzeuge
  • Integrationen
  • Anleitungen
  • FAQs
  • API Reference

Datenbank

Milvus führt eine Datenbankschicht über den Sammlungen ein, die eine effizientere Art der Verwaltung und Organisation Ihrer Daten ermöglicht und gleichzeitig die Mandantenfähigkeit unterstützt.

Was ist eine Datenbank?

In Milvus dient eine Datenbank als logische Einheit für die Organisation und Verwaltung von Daten. Um die Datensicherheit zu erhöhen und Multi-Tenancy zu erreichen, können Sie mehrere Datenbanken erstellen, um Daten für verschiedene Anwendungen oder Mandanten logisch zu isolieren. Zum Beispiel erstellen Sie eine Datenbank, um die Daten von Benutzer A zu speichern, und eine weitere Datenbank für Benutzer B.

Datenbank erstellen

Sie können die Milvus RESTful API oder SDKs verwenden, um Daten programmatisch zu erstellen.

from pymilvus import MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

client.create_database(
    db_name="my_database_1"
)
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.service.database.request.*;

ConnectConfig config = ConnectConfig.builder()
        .uri("http://localhost:19530")
        .token("root:Milvus")
        .build();
MilvusClientV2 client = new MilvusClientV2(config);

CreateDatabaseReq createDatabaseReq = CreateDatabaseReq.builder()
        .databaseName("my_database_1")
        .build();
client.createDatabase(createDatabaseReq);
import {MilvusClient} from '@zilliz/milvus2-sdk-node';
const client = new MilvusClient({ 
    address: "http://localhost:19530",
    token: 'root:Milvus' 
});

await client.createDatabase({
    db_name: "my_database_1"
 });
cli, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
    Address: "localhost:19530",
    Username: "root",
    Password: "Milvus",
})
if err != nil {
    // handle err
}

err = cli.CreateDatabase(ctx, milvusclient.NewCreateDatabaseOption("my_database_1"))
if err != nil {
    // handle err
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "dbName": "my_database_1"
}'

Sie können auch Eigenschaften für die Datenbank festlegen, wenn Sie sie erstellen. Im folgenden Beispiel wird die Anzahl der Replikate der Datenbank festgelegt.

client.create_database(
    db_name="my_database_2",
    properties={
        "database.replica.number": 3
    }
)
Map<String, String> properties = new HashMap<>();
properties.put("database.replica.number", "3");
CreateDatabaseReq createDatabaseReq = CreateDatabaseReq.builder()
        .databaseName("my_database_2")
        .properties(properties)
        .build();
client.createDatabase(createDatabaseReq);
await client.createDatabase({
    db_name: "my_database_2",
    properties: {
        "database.replica.number": 3
    }
});
err := cli.CreateDatabase(ctx, milvusclient.NewCreateDatabaseOption("my_database_2").WithProperty("database.replica.number", 3))
if err != nil {
    // handle err
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "dbName": "my_database_2",
    "properties": {
        "database.replica.number": 3
    }
}'

Datenbanken anzeigen

Sie können die Milvus RESTful API oder SDKs verwenden, um alle vorhandenen Datenbanken aufzulisten und ihre Details anzuzeigen.

# List all existing databases
client.list_databases()

# Output
# ['default', 'my_database_1', 'my_database_2']

# Check database details
client.describe_database(
    db_name="default"
)

# Output
# {"name": "default"}
import io.milvus.v2.service.database.response.*;

ListDatabasesResp listDatabasesResp = client.listDatabases();

DescribeDatabaseResp descDBResp = client.describeDatabase(DescribeDatabaseReq.builder()
        .databaseName("default")
        .build());
await client.describeDatabase({ 
    db_name: 'default'
});
// List all existing databases
databases, err := cli.ListDatabase(ctx, milvusclient.NewListDatabaseOption())
if err != nil {
    // handle err
}
log.Println(databases)

db, err := cli.DescribeDatabase(ctx, milvusclient.NewDescribeDatabaseOption("default"))
if err != nil {
    // handle err
}
log.Println(db)
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/describe" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "dbName": "default"
}'

Verwalten von Datenbankeigenschaften

Jede Datenbank hat ihre eigenen Eigenschaften. Sie können die Eigenschaften einer Datenbank festlegen, wenn Sie die Datenbank erstellen, wie in Datenbank erstellen beschrieben, oder Sie können die Eigenschaften einer vorhandenen Datenbank ändern und löschen.

In der folgenden Tabelle sind die möglichen Datenbankeigenschaften aufgeführt.

Eigenschaft Name

Typ

Eigenschaft Beschreibung

database.replica.number

Ganzzahl

Die Anzahl der Replikate für die angegebene Datenbank.

database.resource_groups

string

Die Namen der Ressourcengruppen, die mit der angegebenen Datenbank verbunden sind, in einer durch Komma getrennten Liste.

database.diskQuota.mb

Ganzzahl

Die maximale Größe des Speicherplatzes für die angegebene Datenbank in Megabyte (MB).

database.max.collections

Ganzzahl

Die maximal zulässige Anzahl von Sammlungen in der angegebenen Datenbank.

database.force.deny.writing

boolesch

Ob die angegebene Datenbank gezwungen werden soll, Schreibvorgänge zu verweigern.

database.force.deny.reading

boolean

Ob die angegebene Datenbank gezwungen werden soll, Lesevorgänge zu verweigern.

Datenbankeigenschaften ändern

Sie können die Eigenschaften einer vorhandenen Datenbank wie folgt ändern. Das folgende Beispiel beschränkt die Anzahl der Sammlungen, die Sie in der Datenbank erstellen können.

client.alter_database_properties(
    db_name: "my_database_1",
    properties: {
        "database.max.collections": 10
    }
)
client.alterDatabaseProperties(AlterDatabasePropertiesReq.builder()
        .databaseName("my_database_1")
        .property("database.max.collections", "10")
        .build());
await milvusClient.alterDatabaseProperties({
  db_name: "my_database_1",
  properties: {"database.max.collections", "10" },
})
err := cli.AlterDatabaseProperties(ctx, milvusclient.NewAlterDatabasePropertiesOption("my_database_1").
    WithProperty("database.max.collections", 1))
if err != nil {
    // handle err
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/alter" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "dbName": "my_database",
    "properties": {
        "database.max.collections": 10
    }
}'

Datenbankeigenschaften löschen

Sie können auch eine Datenbankeigenschaft zurücksetzen, indem Sie sie wie folgt löschen. Das folgende Beispiel hebt die Begrenzung der Anzahl der Sammlungen auf, die Sie in der Datenbank erstellen können.

client.drop_database_properties(
    db_name: "my_database_1",
    property_keys: [
        "database.max.collections"
    ]
)
client.dropDatabaseProperties(DropDatabasePropertiesReq.builder()
        .databaseName("my_database_1")
        .propertyKeys(Collections.singletonList("database.max.collections"))
        .build());
await milvusClient.dropDatabaseProperties({
  db_name: my_database_1,
  properties: ["database.max.collections"],
});
err := cli.DropDatabaseProperties(ctx, milvusclient.NewDropDatabasePropertiesOption("my_database_1", "database.max.collections"))
if err != nil {
    // handle err
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/alter" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "dbName": "my_database",
    "propertyKeys": [
        "database.max.collections"
    ]
}'

Datenbank verwenden

Sie können von einer Datenbank zu einer anderen wechseln, ohne die Verbindung zu Milvus zu unterbrechen.

Die RESTful API unterstützt diesen Vorgang nicht.

client.use_database(
    db_name="my_database_2"
)
client.useDatabase("my_database_2");
await milvusClient.useDatabase({
  db_name: "my_database_2",
});
err = cli.UseDatabase(ctx, milvusclient.NewUseDatabaseOption("my_database_2"))
if err != nil {
    // handle err
}
# This operation is unsupported because RESTful does not provide a persistent connection.
# As a workaround, initiate the required request again with the target database.

Datenbank löschen

Sobald eine Datenbank nicht mehr benötigt wird, können Sie die Datenbank löschen. Beachten Sie dies:

  • Standarddatenbanken können nicht gelöscht werden.

  • Bevor Sie eine Datenbank löschen, müssen Sie zuerst alle Sammlungen in der Datenbank löschen.

Sie können die Milvus RESTful API oder SDKs verwenden, um Daten programmatisch zu erstellen.

client.drop_database(
    db_name="my_database_2"
)
client.dropDatabase(DropDatabaseReq.builder()
        .databaseName("my_database_2")
        .build());
await milvusClient.dropDatabase({
  db_name: "my_database_2",
});
err = cli.DropDatabase(ctx, milvusclient.NewDropDatabaseOption("my_database_2"))
if err != nil {
    // handle err
}
export CLUSTER_ENDPOINT="http://localhost:19530"
export TOKEN="root:Milvus"

curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/databases/drop" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
    "dbName": "my_database"
}'