mirror of
https://github.com/lancedb/lancedb.git
synced 2026-10-24 04:32:27 +00:00
Pin the Rust workspace and Java lance-core dependency to [Lance v14.0.0-beta.22](https://github.com/lance-format/lance/releases/tag/v14.0.0-beta.22), including managed data file parts and descriptor reuse from lance-format/lance#10176. This enables the next LanceDB preview release to provide the tagged dependency needed by lancedb/sophon#8898. No compatibility code changes are required. Update rustls-webpki to 0.103.16 and webpki-roots to 1.0.10 in the lockfile to resolve the two TLS advisories blocking dependency CI (RUSTSEC-2026-0382 and RUSTSEC-2026-0381), without adding advisory exceptions. The Java dependency availability blocker is resolved: both the beta.22 POM and JAR return HTTP 200 from maven.lance.org. On `ea043bf93`, the review reproducer (`cd java && ./mvnw -U -q test -pl lancedb-core -Dspotless.skip=true`) passes all 37 tests, and [Java CI attempt 2](https://github.com/lancedb/lancedb/actions/runs/39556336205/attempts/2) passes.
LanceDB Java Enterprise Client
Configuration and Initialization
LanceDB Cloud
For LanceDB Cloud, use the simplified builder API:
import com.lancedb.LanceDbNamespaceClientBuilder;
import org.lance.namespace.LanceNamespace;
// If your DB url is db://example-db, then your database here is example-db
LanceNamespace namespaceClient = LanceDbNamespaceClientBuilder.newBuilder()
.apiKey("your_lancedb_cloud_api_key")
.database("your_database_name")
.build();
LanceDB Enterprise
For Enterprise deployments, use your custom endpoint:
LanceNamespace namespaceClient = LanceDbNamespaceClientBuilder.newBuilder()
.apiKey("your_lancedb_enterprise_api_key")
.database("your_database_name")
.endpoint("<your_enterprise_endpoint>")
.build();
RTE write path
Most table operations reach LanceDB through the LanceNamespace above, which is
generated from the Lance Namespace specification. The RTE LSM routes are not part
of that specification, so they are issued through a separate client:
import com.lancedb.LanceDbRestClient;
import com.lancedb.LanceDbTableRTE;
import com.lancedb.RTEWriteSpec;
LanceDbRestClient client = LanceDbNamespaceClientBuilder.newBuilder()
.apiKey("your_lancedb_cloud_api_key")
.database("your_database_name")
.buildRestClient();
LanceDbTableRTE rte = new LanceDbTableRTE(client, "my_table");
// Route future merge_insert upserts through the RTE, hash-bucketed by `id`.
rte.enableRTE(RTEWriteSpec.bucket("id", 16));
// ... merge_insert traffic ...
// Converge the fresh tier into the base table.
rte.checkpointRTE();
// Inspect live per-table-shard state.
rte.getRTEStats().ifPresent(stats -> stats.tableShards().forEach(tableShard ->
System.out.println(tableShard.shardId() + ": " + tableShard.sstables().size() + " SSTables")));
client.close();
maintainedIndexes is tri-state, and the null default is the opposite of what a Java
reader usually expects:
| Value | Meaning |
|---|---|
| unset (null) | Maintain every index the table has, including ones created later |
Collections.emptyList() |
Maintain none |
Arrays.asList("id_idx") |
Maintain exactly those |
Development
The parent POM includes https://maven.lance.org to resolve Lance beta and RC
dependencies. Use an explicit lance-core.version; numbered beta and RC versions
are Maven releases, not snapshots. Maven Central remains available for stable
and historical versions, as well as other dependencies.
Build:
./mvnw install -pl lancedb-core -am
Run tests:
./mvnw test -pl lancedb-core