Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: add key terms and table of contents #308

Merged
merged 4 commits into from
Oct 5, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,21 @@ With Open Saves, game developers can run a cloud-native storage system that is:
- Fast: With a built-in caching system, Open Saves optimizes data placements based on access frequency and data size, all to achieve both low latency for smaller binary objects and high throughput for big objects.
- Scalable: The Open Saves API server can run on either [Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine), or [Cloud Run](https://cloud.google.com/run). Both platforms can scale out to handle hundreds of thousands of requests per second. Open Saves also stores data in Google [Datastore](https://cloud.google.com/datastore) and [Cloud Storage](https://cloud.google.com/storage), and can handle hundreds of gigabytes of data.

For more information, see the [Overview](./docs/overview.md). To get started with deploying Open Saves, check out the [deployment guide](./docs/deploying.md).
## Table of Contents

For more information about the API, refer to the [API reference](./docs/reference.md).
- [Overview](./docs/overview.md)
- [Key terms](.docs/key-terms.md)
- Using Open Saves
- [Deployment guide](./docs/deploying.md)
- [API reference](./docs/reference.md)
- Contributing to Open Saves
- [How to contribute](docs/contributing.md)
- [Open Saves development guide](docs/development.md)

## Disclaimer

This software is currently beta, and subject to change. It is not yet ready to serve production workloads.

## Contributing to the project

Check out [How to Contribute](docs/contributing.md) before contributing to the project.

The [Open Saves development guide](docs/development.md) has detailed instructions on getting the source code, making changes, testing, and submitting a pull request to Open Saves.

## Code of Conduct

Participation in this project comes under the [Contributor Covenant Code of Conduct](docs/code-of-conduct.md).
Expand Down
35 changes: 35 additions & 0 deletions docs/key-terms.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Key Terms

This page describes concepts upon which Open Saves is built. For an overview of Open Saves, see [Overview](./docs/overview.md).

### Store

A [store](https://pkg.go.dev/github.com/googleforgames/[email protected]/api#Store) is an immutable container for a collection of related records. You create and receive stores using a unary RPC.

### Record

A [record](https://pkg.go.dev/github.com/googleforgames/[email protected]/api#Record) is a mutable data entity that belongs to a store. You create and retrieve records using a unary RPC.

A record can consist of the following:

* [Property](https://pkg.go.dev/github.com/googleforgames/[email protected]/api#Property): the field where typed data is stored as an integer, string, or boolean.

* [Blob](https://pkg.go.dev/github.com/googleforgames/[email protected]/api#BlobMetadata): a single large object used for storing images, videos, game state data, or other types of data in Cloud Storage. Blobs are created and retrieved by a streaming RPC (`Create/GetBlob`).

* [Chunked blob](https://pkg.go.dev/github.com/googleforgames/[email protected]/api#ChunkMetadata): a large blob split into smaller chunks that are uploaded in parallel.
To upload a chunked blob, call `CreateChunkedUploadRequest` with the chunk size and get a session ID to upload chunks via a streaming API. When downloading a chunked Blob, a streaming API is also used after you call `GetBlobChunkRequest`.

Blobs and chunked blobs are treated as separate types of data.

### Owner

You can specify the owner of a store or record using the `OwnerId` field.

### Tags

Tags are a list of strings associated with stores or records that you can use to organize and query your resources. You can edit the tags using `UpdateStore` or `UpdateRecord`.

### Hints

You can use [hints](https://pkg.go.dev/github.com/googleforgames/[email protected]/api#Hint) to indicate how you want the server to behave. For example, use cache hints to instruct the server to skip the cache when retrieving records or to not cache records.
You can also use blob hints to force data to be stored in Cloud Storage or force a blob to be stored in the metadata server. Blob and cache hints can be used in tandem, such as when you want to skip the cache when storing a record but also force the property as an inline blob.