Skip to content

Commit 8e819d7

Browse files
committed
docs: update aerospike docs
1 parent 00532ed commit 8e819d7

3 files changed

Lines changed: 6 additions & 6 deletions

File tree

docs/how-to-guides/online-server-performance-tuning.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,6 @@ online_store:
496496
- **`hosts`**: List every seed node. The Aerospike client discovers the rest of the cluster automatically and opens one connection pool per node.
497497
- **`ttl_seconds: 0`** means "never expire"; omit the key to inherit the namespace's `default-ttl`. Expiry is enforced by the server's `nsup` thread — nothing to delete on the client side.
498498
- Co-locate the feature server in the **same availability zone / rack** as the Aerospike cluster; sub-millisecond reads are bandwidth- and RTT-sensitive.
499-
- On the Aerospike side: increase `proto-fd-max` if the feature server reports "max fd" errors, and turn on `partition-tree-sprigs` for namespaces with billions of records to spread index contention.
500499

501500
### Remote online store tuning
502501

docs/reference/online-stores/aerospike.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ The Aerospike online store is currently in **preview**. Some functionality may b
1414
* Partial, server-side upserts via Aerospike Map CDT operations — writing one feature view never clobbers another feature view stored on the same entity.
1515
* Record-level TTL controlled by a single `ttl_seconds` config option (honours the namespace default, a "never expire" sentinel, or an explicit number of seconds).
1616
* Per-feature-view **namespace overrides** and **set overrides** — pin individual feature views to RAM-only or SSD-backed namespaces, or isolate one view in its own set, without splitting projects.
17-
* **Prewriting hook** — a configurable, import-string-resolved callable applied to every write batch for cross-cutting concerns like PII masking, encryption-at-rest or value coercion.
17+
* **Prewriting hook** — a configurable, import-string-resolved callable applied to every write batch for cross-cutting concerns like PII masking, application-side encryption, or value coercion.
1818
* Authentication and TLS options for Aerospike Enterprise Edition passed straight through to the Aerospike Python client.
1919
* `client_kwargs` escape hatch for any advanced client-config field not surfaced on `AerospikeOnlineStoreConfig`.
2020
* Baseline: Aerospike Server **≥ 6.0** (uses batch-write / batch-operate APIs). The store has been developed against CE 8.x.
@@ -298,7 +298,7 @@ The Aerospike online store uses a **single set per project** with entity-key col
298298
| :---------------- | :---------------------------------------------------------------------------- |
299299
| Namespace | `online_store.namespace` (must be pre-configured on the cluster); per-feature-view override via `online_store.namespace_overrides` |
300300
| Set | `online_store.set_name_template` → `"{project}_{collection_suffix}"` by default; per-feature-view override via `online_store.set_overrides` |
301-
| Key | `serialize_entity_key(entity_key)` (raw bytes) |
301+
| Key | `serialize_entity_key(entity_key)` as `bytearray` user key |
302302
| Bin `features` | Map CDT keyed by feature-view name, each value a map of `feature → native` |
303303
| Bin `event_ts` | Map CDT keyed by feature-view name, each value an int64 epoch-ms timestamp |
304304
| Bin `created_ts` | Top-level int64 epoch-ms timestamp (last `feast materialize`) |
@@ -308,7 +308,7 @@ The Aerospike online store uses a **single set per project** with entity-key col
308308
For a single entity carrying features from two feature views (`driver_stats` and `pricing`):
309309

310310
```text
311-
key: (ns="feast", set="my_feature_repo_latest", user_key=<serialized_entity_key bytes>)
311+
key: (ns="feast", set="my_feature_repo_latest", user_key=<serialize_entity_key as bytearray>)
312312
bins:
313313
features:
314314
driver_stats:
@@ -326,7 +326,7 @@ bins:
326326

327327
* **Record per entity, bin per concept.** `features` and `event_ts` are Aerospike Map CDT bins, not dynamic bins, which keeps the store within the 15-byte Aerospike bin-name limit regardless of how many feature views a project has.
328328
* **Partial upserts via Map CDT ops.** Writes use `batch_write` with `map_put_items("features", {<fv>: {...}})` and `map_put("event_ts", <fv>, <epoch_ms>)`. Concurrent writes to different feature views on the same entity never clobber each other — each write mutates only its own map keys.
329-
* **Entity-key bytes as the Aerospike user key.** Feast's `serialize_entity_key` output is used directly as the user key, so lookups are O(1) and no secondary index is needed.
329+
* **Entity-key bytes as the Aerospike user key.** Feast's `serialize_entity_key` output is passed as a `bytearray` user key (not `bytes` — the Python client hashes only the first byte of `bytes` keys, which would collapse distinct entities).
330330
* **Timestamps as int64 epoch milliseconds.** Aerospike has no native datetime type; tz-naive timestamps are treated as UTC per the `OnlineStore` contract.
331331

332332
### TTL and expiry

examples/online_store/aerospike_overrides_and_hooks/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ module the YAML references.
2828
* Feast installed with the Aerospike extra (`pip install 'feast[aerospike]'`).
2929
* An Aerospike cluster reachable from your writer process. The
3030
[Aerospike online-store reference](../../../docs/reference/online-stores/aerospike.md)
31-
has a docker-compose path for local CE if you don't already have one.
31+
shows a minimal local CE config (`127.0.0.1:3000`); run Aerospike however
32+
you normally would (Docker, Kubernetes, bare metal).
3233
* On every process that calls `online_write_batch` through this store
3334
(materialization workers, the registry CLI host, the feature server if
3435
you run one), the `FEAST_PII_SALT` environment variable must be set

0 commit comments

Comments
 (0)