From bca89544cbf4d9b2bb8d1fe082611e010762e60b Mon Sep 17 00:00:00 2001 From: Kevin Whinnery Date: Mon, 4 Sep 2023 17:18:25 -0500 Subject: [PATCH] quick start changes --- kv/manual/index.md | 297 +++++++++++++--------- kv/manual/key_space.md | 18 +- kv/manual/on_deploy.md | 15 ++ kv/manual/operations.md | 18 +- kv/manual/secondary_indexes.md | 18 +- kv/manual/transactions.md | 30 +-- runtime/manual/images/command_palette.png | Bin 0 -> 43606 bytes runtime/manual/index.mdx | 18 ++ 8 files changed, 272 insertions(+), 142 deletions(-) create mode 100644 runtime/manual/images/command_palette.png diff --git a/kv/manual/index.md b/kv/manual/index.md index c089de002..64754a719 100644 --- a/kv/manual/index.md +++ b/kv/manual/index.md @@ -1,165 +1,234 @@ -# About Deno KV +# Deno KV Quick Start -Since version 1.32, Deno has a built in key-value store that durably persists -data on disk, allowing for data storage and access across service and system -restarts. +**Deno KV** is a +[key-value database](https://en.wikipedia.org/wiki/Key%E2%80%93value_database) +built directly into the Deno runtime, available in the +[`Deno.Kv` namespace](https://deno.land/api?unstable&s=Deno.Kv). It can be used +for many kinds of data storage use cases, but excels at storing simple data +structures that benefit from very fast reads and writes. Deno KV is available in +the Deno CLI and on [Deno Deploy](./on_deploy.md). -The key-value store is designed to be fast and easy to use. Keys are sequences -(arrays) of JavaScript types like `string`, `number`, `bigint`, `boolean`, and -`Uint8Array`. Values are arbitrary JavaScript primitives, objects, and arrays. +:::caution Deno KV is currently in beta -The store supports seven different operations that can be composed together to -support many use-cases and enable persistence for most common patterns in modern -web applications. Atomic operations are available that allow grouping of any -number of modification operations into a single atomic transaction. +Deno KV is currently **experimental** and **subject to change**. While we do our +best to ensure data durability, data loss is possible, especially around Deno +updates. -All data in the KV store is versioned, which allows atomic operations to be -conditional on versions in storage matching the value that user code expected. -This enables optimistic locking, enabling virtual asynchronous transactions. +Excuting Deno programs that use KV currently requires the `--unstable` flag, as +below: -All writes to the KV store are strongly consistent and immediately durably -persisted. Reads are strongly consistent by default, but alternative consistency -modes are available to enable different performance tradeoffs. +```sh +deno run -A --unstable my_kv_code.ts +``` -> ⚠️ Deno KV is currently **experimental** and **subject to change**. While we do -> our best to ensure data durability, data loss is possible, especially around -> Deno updates. We recommend that you backup your data regularly and consider -> storing data in a secondary store for the time being. +::: -## Getting started +Let's walk through the key features of Deno KV. -> ⚠️ Because Deno KV is currently **experimental** and **subject to change**, it -> is only available when running with `--unstable` flag in Deno CLI. +## Opening a database -All operations on the key-value store are performed via the `Deno.Kv` API. +In your Deno program, you can get a reference to a KV database using +[`Deno.openKv()`](https://deno.land/api?unstable=&s=Deno.openKv). You may pass +in an optional file system path to where you'd like to store your database, +otherwise one will be created for you based on the current working directory of +your script. -A database can be opened using the `Deno.openKv()` function. This function -optionally takes a database path on disk as the first argument. If no path is -specified, the database is persisted in a global directory, bound to the script -that `Deno.openKv()` was called from. Future invocations of the same script will -use the same database. +```ts +const kv = await Deno.openKv(); +``` -Operations can be called on the `Deno.Kv`. The three primary operations on the -database are `get`, `set`, and `delete`. These allow reading, writing, and -deleting individual keys. +## Creating, updating, and reading a key-value pair -```tsx -// Open the default database for the script. +Data in Deno KV is stored as key-value pairs, much like properties of a +JavaScript object literal or a +[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map). +[Keys](./key_space.md) are represented as an array of JavaScript types, like +`string`, `number`, `bigint`, or `boolean`. Values can be arbitrary JavaScript +objects. In this example, we create a key-value pair representing a user's UI +preferences, and save it with +[`kv.set()`](https://deno.land/api?s=Deno.Kv&unstable=&p=prototype.set). + +```ts const kv = await Deno.openKv(); -// Persist an object at the users/alice key. -await kv.set(["users", "alice"], { name: "Alice" }); +const prefs = { + username: "ada", + theme: "dark", + language: "en-US", +}; -// Read back this key. -const res = await kv.get(["users", "alice"]); -console.log(res.key); // [ "users", "alice" ] -console.log(res.value); // { name: "Alice" } +const result = await kv.set(["preferences", "ada"], prefs); +``` -// Delete the key. -await kv.delete(["users", "alice"]); +Once a key-value pair is set, you can read it from the database with +[`kv.get()`](https://deno.land/api?s=Deno.Kv&unstable=&p=prototype.get): -// Reading back the key now returns null. -const res2 = await kv.get(["users", "alice"]); -console.log(res2.key); // [ "users", "alice" ] -console.log(res2.value); // null +```ts +const entry = await kv.get(["preferences", "ada"]); +console.log(savedPrefs.key); +console.log(savedPrefs.value); +console.log(savedPrefs.versionstamp); ``` -The `list` operation can be used to list out all keys matching a specific -selector. In the below example all keys starting with some prefix are selected. +Both `get` and `list` [operations](./operations.md) return a +[KvEntry](https://deno.land/api?s=Deno.KvEntry&unstable=) object with the +following properties: + +- `key` - the array key you used to set the value +- `value` - the JavaScript object you set for this key +- `versionstamp` - a generated value used to determine if a key has been + updated. + +The `set` operation is also used to update objects that already exist for a +given key. When a key's value is updated, its `versionstamp` will change to a +new generated value. + +## Listing several key-value pairs + +To get values for a finite number of keys, you may use +[`kv.getMany()`](https://deno.land/api?s=Deno.Kv&unstable=&p=prototype.getMany). +Pass in several keys as arguments, and you'll receive an array of values for +each key. Note that **values and versionstamps can be `null`** if no value +exists for the given key(s). -```tsx,ignore -await kv.set(["users", "alice"], { birthday: "January 1, 1990" }); -await kv.set(["users", "sam"], { birthday: "February 14, 1985" }); -await kv.set(["users", "taylor"], { birthday: "December 25, 1970" }); +```ts +const kv = await Deno.openKv(); +const result = await db.getMany([ + ["preferences", "ada"], + ["preferences", "grace"], +]); +result[0].key; // ["preferences", "ada"] +result[0].value; // { ... } +result[0].versionstamp; // "00000000000000010000" +result[1].key; // ["preferences", "grace"] +result[1].value; // null +result[1].versionstamp; // null +``` + +Often, it is useful to retrieve a list of key-value pairs from all keys that +share a given prefix. This type of operation is possible using +[`kv.list()`](https://deno.land/api?s=Deno.Kv&unstable=&p=prototype.list). In +this example, we get a list of key-value pairs that share the `"preferences"` +prefix. -// List out all entries with keys starting with `["users"]` -for await (const entry of kv.list({ prefix: ["users"] })) { - console.log(entry.key); - console.log(entry.value); +```ts +const kv = await Deno.openKv(); +const entries = db.list({ prefix: ["preferences"] }); +for await (const entry of entries) { + console.log(entry.key); // ["preferences", "ada"] + console.log(entry.value); // { ... } + console.log(entry.versionstamp); // "00000000000000010000" } ``` -> Note: in addition to prefix selectors, range selectors, and constrained prefix -> selectors are also available. +Returned keys are ordered lexicographically based on the next component of the +key after the prefix. So KV pairs with these keys: + +- `["preferences", "ada"]` +- `["preferences", "bob"]` +- `["preferences", "cassie"]` -In addition to individual `get`, `set`, and `delete` operations, the key-value -store supports `atomic` operations that allow multiple modifications to take -place at once, optionally conditional on the existing data in the store. +Will be returned in that order by `kv.list()`. -In the below example, we insert a new user only if it does not yet exist by -performing an atomic operation that has a check that there is no existing value -for the given key: +Read operations can either be performed in +[**strong or eventual consistency mode**](./operations.md). Strong consistency +mode guarantees that the read operation will return the most recently written +value. Eventual consistency mode may return a stale value, but is faster. By +contrast, writes are always performed in strong consistency mode. + +## Deleting key-value pairs + +You can delete a key from the database using +[`kv.delete()`](https://deno.land/api?s=Deno.Kv&unstable=&p=prototype.delete). +No action is taken if no value is found for the given key. + +```ts +const kv = await Deno.openKv(); +await db.delete(["preferences", "alan"]); +``` + +## Atomic transactions + +Deno KV is capable of executing [atomic transactions](./transactions.md), which +enables you to conditionally execute one or many data manipulation operations at +once. In the following example, we create a new preferences object only if it +hasn't been created already. + +```ts +const kv = await Deno.openKv(); + +const key = ["preferences", "alan"]; +const value = { + username: "alan", + theme: "light", + language: "en-GB", +}; -```tsx,ignore -const key = ["users", "alice"]; -const value = { birthday: "January 1, 1990" }; const res = await kv.atomic() .check({ key, versionstamp: null }) // `null` versionstamps mean 'no value' .set(key, value) .commit(); if (res.ok) { - console.log("User did not yet exist. Inserted!"); + console.log("Preferences did not yet exist. Inserted!"); } else { - console.log("User already exists."); + console.error("Preferences already exist."); } ``` -## Reference - -- [API Reference](https://deno.land/api?unstable&s=Deno.Kv) -- [Key Space](./key_space.md) -- [Operations](./operations.md) - -## Patterns - -- [Transactions](./transactions.md) -- [Secondary Indexes](./secondary_indexes.md) +Learn more about transactions in Deno KV [here](./transactions.md). - +At this point, you're just beginning to scratch the surface with Deno KV. Be +sure to check out our guide on the [Deno KV key space](./key_space.md), and a +collection of [tutorials and example applications](../tutorials/index.md) here. diff --git a/kv/manual/key_space.md b/kv/manual/key_space.md index 7835e06c2..020470cae 100644 --- a/kv/manual/key_space.md +++ b/kv/manual/key_space.md @@ -1,9 +1,19 @@ # Key Space -> ⚠️ Deno KV is currently **experimental** and **subject to change**. While we do -> our best to ensure data durability, data loss is possible, especially around -> Deno updates. We recommend that you backup your data regularly and consider -> storing data in a secondary store for the time being. +:::caution Deno KV is currently in beta + +Deno KV is currently **experimental** and **subject to change**. While we do our +best to ensure data durability, data loss is possible, especially around Deno +updates. + +Excuting Deno programs that use KV currently requires the `--unstable` flag, as +below: + +```sh +deno run -A --unstable my_kv_code.ts +``` + +::: Deno KV is a key value store. The key space is a flat namespace of key+value+versionstamp pairs. Keys are sequences of key parts, which allow diff --git a/kv/manual/on_deploy.md b/kv/manual/on_deploy.md index 054cd5080..d8fceb4fc 100644 --- a/kv/manual/on_deploy.md +++ b/kv/manual/on_deploy.md @@ -1,5 +1,20 @@ # KV on Deno Deploy +:::caution Deno KV is currently in beta + +Deno KV is currently **experimental** and **subject to change**. While we do our +best to ensure data durability, data loss is possible, especially around Deno +updates. + +Excuting Deno programs that use KV currently requires the `--unstable` flag, as +below: + +```sh +deno run -A --unstable my_kv_code.ts +``` + +::: + Deno Deploy now offers a built-in serverless key-value database called Deno KV, which is currently in closed beta testing. To join the waitlist for this exclusive beta, please [sign up here.](https://dash.deno.com/kv). While in diff --git a/kv/manual/operations.md b/kv/manual/operations.md index fd9b5aeef..caa7192fd 100644 --- a/kv/manual/operations.md +++ b/kv/manual/operations.md @@ -1,9 +1,19 @@ # Operations -> ⚠️ Deno KV is currently **experimental** and **subject to change**. While we do -> our best to ensure data durability, data loss is possible, especially around -> Deno updates. We recommend that you backup your data regularly and consider -> storing data in a secondary store for the time being. +:::caution Deno KV is currently in beta + +Deno KV is currently **experimental** and **subject to change**. While we do our +best to ensure data durability, data loss is possible, especially around Deno +updates. + +Excuting Deno programs that use KV currently requires the `--unstable` flag, as +below: + +```sh +deno run -A --unstable my_kv_code.ts +``` + +::: The Deno KV API provides a set of operations that can be performed on the key space. diff --git a/kv/manual/secondary_indexes.md b/kv/manual/secondary_indexes.md index 32158749d..3d53878b4 100644 --- a/kv/manual/secondary_indexes.md +++ b/kv/manual/secondary_indexes.md @@ -1,9 +1,19 @@ # Secondary Indexes -> ⚠️ Deno KV is currently **experimental** and **subject to change**. While we do -> our best to ensure data durability, data loss is possible, especially around -> Deno updates. We recommend that you backup your data regularly and consider -> storing data in a secondary store for the time being. +:::caution Deno KV is currently in beta + +Deno KV is currently **experimental** and **subject to change**. While we do our +best to ensure data durability, data loss is possible, especially around Deno +updates. + +Excuting Deno programs that use KV currently requires the `--unstable` flag, as +below: + +```sh +deno run -A --unstable my_kv_code.ts +``` + +::: Key-value stores like Deno KV organize data as collections of key-value pairs, where each unique key is associated with a single value. This structure enables diff --git a/kv/manual/transactions.md b/kv/manual/transactions.md index 2c264fca9..2df1818ec 100644 --- a/kv/manual/transactions.md +++ b/kv/manual/transactions.md @@ -1,21 +1,19 @@ # Transactions -> ⚠️ Deno KV is currently **experimental** and **subject to change**. While we do -> our best to ensure data durability, data loss is possible, especially around -> Deno updates. We recommend that you backup your data regularly and consider -> storing data in a secondary store for the time being. - -> A database transaction, in the context of a key-value store like Deno KV, -> refers to a sequence of data manipulation operations executed as a single, -> atomic unit of work to ensure data consistency, integrity, and durability. -> These operations, typically comprising read, write, update, and delete actions -> on key-value pairs, adhere to the ACID (Atomicity, Consistency, Isolation, and -> Durability) properties, which guarantee that either all operations within the -> transaction are successfully completed, or the transaction is rolled back to -> its initial state in the event of a failure, leaving the database unchanged. -> This approach allows multiple users or applications to interact with the KV -> store concurrently, while maintaining the database's consistency, reliability -> and stability. +:::caution Deno KV is currently in beta + +Deno KV is currently **experimental** and **subject to change**. While we do our +best to ensure data durability, data loss is possible, especially around Deno +updates. + +Excuting Deno programs that use KV currently requires the `--unstable` flag, as +below: + +```sh +deno run -A --unstable my_kv_code.ts +``` + +::: The Deno KV store utilizes _optimistic concurrency control transactions_ rather than _interactive transactions_ like many SQL systems like PostgreSQL or MySQL. diff --git a/runtime/manual/images/command_palette.png b/runtime/manual/images/command_palette.png new file mode 100644 index 0000000000000000000000000000000000000000..409a9f146b7c7a887d718f65e792784688c5559d GIT binary patch literal 43606 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 o^zYrpUvKpPAL0M_Lqz