Base de données
Milvus introduit une couche de base de données au-dessus des collections, offrant un moyen plus efficace de gérer et d'organiser vos données tout en prenant en charge la multi-location.
Qu'est-ce qu'une base de données ?
Dans Milvus, une base de données sert d'unité logique pour organiser et gérer les données. Pour améliorer la sécurité des données et parvenir à une multi-location, vous pouvez créer plusieurs bases de données afin d'isoler logiquement les données pour différentes applications ou différents locataires. Par exemple, vous créez une base de données pour stocker les données de l'utilisateur A et une autre base de données pour l'utilisateur B.
Créer une base de données
Vous pouvez utiliser l'API RESTful ou les SDK de Milvus pour créer des données par programme.
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: "Milvus",
Password: "root",
})
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"
}'
Vous pouvez également définir les propriétés de la base de données lorsque vous la créez. L'exemple suivant définit le nombre de répliques de la base de données.
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
}
}'
Visualisation des bases de données
Vous pouvez utiliser l'API RESTful ou les SDK Milvus pour répertorier toutes les bases de données existantes et afficher leurs détails.
# 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"
}'
Gérer les propriétés des bases de données
Chaque base de données a ses propres propriétés. Vous pouvez définir les propriétés d'une base de données lorsque vous la créez, comme décrit dans Créer une base de données, ou vous pouvez modifier et supprimer les propriétés d'une base de données existante.
Le tableau suivant répertorie les propriétés possibles des bases de données.
Propriété Nom |
Type de propriété |
Description de la propriété |
|---|---|---|
|
nombre entier |
Nombre de répliques pour la base de données spécifiée. |
|
chaîne |
Les noms des groupes de ressources associés à la base de données spécifiée dans une liste séparée par des virgules. |
|
entier |
Taille maximale de l'espace disque pour la base de données spécifiée, en mégaoctets (Mo). |
|
nombre entier |
Nombre maximal de collections autorisées dans la base de données spécifiée. |
|
booléen |
Obliger ou non la base de données spécifiée à refuser les opérations d'écriture. |
|
booléen |
Indique s'il faut forcer la base de données spécifiée à refuser les opérations de lecture. |
|
chaîne de caractères |
Spécifie le fuseau horaire par défaut appliqué aux opérations sensibles à l'heure dans la base de données, en particulier pour les champs |
Modifier les propriétés d'une base de données
Vous pouvez modifier les propriétés d'une base de données existante comme suit. L'exemple suivant limite le nombre de collections que vous pouvez créer dans la base de données.
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
}
}'
Supprimer les propriétés d'une base de données
Vous pouvez également réinitialiser une propriété de base de données en la supprimant comme suit. L'exemple suivant supprime la limite du nombre de collections que vous pouvez créer dans la base de données.
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"
]
}'
Utiliser la base de données
Vous pouvez passer d'une base de données à une autre sans vous déconnecter de Milvus.
L'API RESTful ne prend pas en charge cette opération.
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.
Abandonner la base de données
Lorsqu'une base de données n'est plus nécessaire, vous pouvez la supprimer. Notez que :
Les bases de données par défaut ne peuvent pas être supprimées.
Avant de supprimer une base de données, vous devez d'abord supprimer toutes les collections de la base de données.
Vous pouvez utiliser l'API RESTful Milvus ou les SDK pour créer des données par programme.
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"
}'
FAQ
Comment gérer les autorisations pour une base de données ?
Milvus utilise le contrôle d'accès basé sur les rôles (RBAC) pour gérer les autorisations. Vous pouvez créer des rôles avec des privilèges spécifiques et les attribuer à des utilisateurs, contrôlant ainsi leur accès à différentes bases de données. Pour plus de détails, voir la documentation RBAC.
Existe-t-il des limitations de quotas pour une base de données ?
Oui, Milvus vous permet de définir des limitations de quotas pour une base de données, telles que le nombre maximum de collections. Pour une liste complète des limitations, veuillez vous référer à la documentation Limites de Milvus.