Skip to content

本页尚未翻译

本页内容仍为英文原文,源自官方文档 management/database。中文翻译正在分批进行中。

Database ​

Connect to LanceDB and configure storage, credentials and read consistency.

Applies to: Embedded ✅, Enterprise ✅

A database connection provides access to tables and namespaces in a catalog. Use it to create and open tables, list catalog objects, and configure how your application reaches the data.

Connection URIs ​

URIOfferingWhere queries run
./.lancedbLanceDB Embedded, with local storageIn your application
s3://bucket/path, gs://bucket/path, az://container/pathLanceDB Embedded, with object storageIn your application
db://my-databaseLanceDB EnterpriseOn the Enterprise service

Connect to LanceDB has examples for each connection type. A connection to object storage still uses the embedded library: your process reads and writes the bucket directly. Enterprise runs operations remotely and manages the supporting compute and maintenance.

Connect to Enterprise ​

Replace the placeholders with the database URI, key, region and endpoint provided by your administrator.

python
import lancedb

db = lancedb.connect(
    uri="db://your-database",
    api_key="your-api-key",
    region="us-east-1",
    host_override="https://your-endpoint",
    sql_host_override="grpc+tls://your-sql-endpoint:10026",
)
typescript
import * as lancedb from "@lancedb/lancedb";

const db = await lancedb.connect("db://your-database", {
  apiKey: "your-api-key",
  region: "us-east-1",
  hostOverride: "https://your-endpoint",
});
Python optionTypeScript optionPurpose
api_keyapiKeyAuthenticate the connection
regionregionSelect the database's region
host_overridehostOverrideSet the Enterprise endpoint
client_configclientConfigConfigure retries, timeouts and connection pooling. A retry can repeat an append.

Use your deployment's region rather than relying on the us-east-1 default. For application code, load credentials from environment variables or a secrets manager. See Authentication for OAuth and SQL for the separate SQL connection settings.

Storage options ​

For LanceDB Embedded tables in object storage, storage_options configures credentials, endpoints and options for new tables. This example enables stable row IDs for tables created through the connection:

python
db = lancedb.connect(
    "s3://bucket/path",
    storage_options={"new_table_enable_stable_row_ids": "true"},
)
typescript
import * as lancedb from "@lancedb/lancedb";

const db = await lancedb.connect("s3://bucket/path", {
  storageOptions: { new_table_enable_stable_row_ids: "true" },
});

Set stable row IDs before creating a table that needs them, such as an ordinary materialized-view source in Python SDK 0.40.0. The option does not change tables that already exist. Enterprise storage settings are managed on the server.

See Object storage for provider credentials and other options.

Read consistency ​

For LanceDB Embedded connections, read_consistency_interval controls how often reads check for table versions committed by other writers. For example, check at most once every five seconds:

python
from datetime import timedelta
db = lancedb.connect(
    "./.lancedb", read_consistency_interval=timedelta(seconds=5)
)
typescript
import * as lancedb from "@lancedb/lancedb";

const db = await lancedb.connect("./.lancedb", { readConsistencyInterval: 5 });

By default, an Embedded table handle does not automatically pick up another process's writes. Reopen the table, check out its latest version, or configure a consistency interval when you need those updates. A zero interval checks on every read, with the cost of a metadata check.

Enterprise manages read freshness on the server. See Consistency for its behavior and the distinction between seeing your own writes and seeing another client's writes.

Database operations ​

The connection provides methods to create, open, list and drop tables.

OperationPythonTypeScript
Create a tablecreate_tablecreateTable
Open a tableopen_tableopenTable
List tablestable_names, list_tablestableNames, listTables
Drop a tabledrop_tabledropTable

Use the namespace and pagination options documented in Namespaces when working outside the root namespace or listing a large catalog. Tables covers table schemas, versions and lifecycle operations.

注意

Dropping a table removes its history as well as its current data. You cannot recover a dropped table through table versioning. The LanceDB Embedded drop_database() and drop_all_tables() operations remove all tables without a confirmation prompt.

Async connections ​

Python's connect_async returns an AsyncConnection. Await its operations when working in an asynchronous application:

python
db = await lancedb.connect_async("./.lancedb")
table = await db.open_table("documents")

TypeScript's connection and table operations already return promises.

An async connection and a background job serve different purposes. Async APIs let other tasks run while your application waits for an operation. A job represents work that can continue on the server after the submission call returns.

Privileges ​

A database's OWNERSHIP, USAGE and CREATE_NAMESPACE are granted through the REST ACL API or SQL GRANT/REVOKE:

sql
GRANT USAGE, CREATE SCHEMA ON DATABASE analytics TO ROLE readers

See Privileges for the full statement syntax and every target it reaches.