Skip to content
Draft
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
38 changes: 21 additions & 17 deletions app/authzed/guides/picking-a-product/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,32 @@ This document is designed to give a high-level overview of the features supporte

## Feature Matrix

| Feature | [Open Source] | [Cloud] | [Dedicated] | [Enterprise] |
| ---------------------------- | :-----------: | :-----: | :---------: | :----------: |
| Self-Hosted | <Yes /> | <No /> | <No /> | <Yes /> |
| No-commit pricing | <Yes /> | <Yes /> | <No /> | <No /> |
| [Materialize (Early Access)] | <No /> | <No /> | <Yes /> | <No /> |
| [Management Dashboard] | <No /> | <Yes /> | <Yes /> | <No /> |
| [Private Networking] | DIY | <No /> | <Yes /> | DIY |
| [Workload Isolation] | DIY | <Yes /> | <Yes /> | DIY |
| [Automated Updates] | DIY | <Yes /> | <Yes /> | DIY |
| [SOC2 Compliance] | DIY | <Yes /> | <Yes /> | DIY |
| [Audit Logging] | <No /> | <Yes /> | <Yes /> | <Yes /> |
| [Rate Limiting] | <No /> | <Yes /> | <Yes /> | <Yes /> |
| [Multi-Region Deployments] | DIY | <No /> | <Yes /> | DIY |
| [Security Embargo] | <No /> | <Yes /> | <Yes /> | <Yes /> |
| [Restricted API Access] | DIY | <Yes /> | <Yes /> | <Yes /> |
| [Expedited Support] | <No /> | <Yes /> | <Yes /> | <Yes /> |
| Feature | [Open Source] | [Cloud] | [Dedicated] | [Enterprise] |
| -------------------------------- | :-----------: | :-----: | :---------: | :----------: |
| Self-Hosted | <Yes /> | <No /> | <No /> | <Yes /> |
| No-commit pricing | <Yes /> | <Yes /> | <No /> | <No /> |
| **[Materialize]** | <No /> | <No /> | <Yes /> | <No /> |
| ↳ [Accelerated Queries] | <No /> | <No /> | <Yes /> | <No /> |
| ↳ [Event Streams (Early Access)] | <No /> | <No /> | <Yes /> | <No /> |
| [Management Dashboard] | <No /> | <Yes /> | <Yes /> | <No /> |
| [Private Networking] | DIY | <No /> | <Yes /> | DIY |
| [Workload Isolation] | DIY | <Yes /> | <Yes /> | DIY |
| [Automated Updates] | DIY | <Yes /> | <Yes /> | DIY |
| [SOC2 Compliance] | DIY | <Yes /> | <Yes /> | DIY |
| [Audit Logging] | <No /> | <Yes /> | <Yes /> | <Yes /> |
| [Rate Limiting] | <No /> | <Yes /> | <Yes /> | <Yes /> |
| [Multi-Region Deployments] | DIY | <No /> | <Yes /> | DIY |
| [Security Embargo] | <No /> | <Yes /> | <Yes /> | <Yes /> |
| [Restricted API Access] | DIY | <Yes /> | <Yes /> | <Yes /> |
| [Expedited Support] | <No /> | <Yes /> | <Yes /> | <Yes /> |

[Cloud]: #cloud
[Dedicated]: #dedicated
[Enterprise]: #enterprise
[Open Source]: #open-source
[Materialize (Early Access)]: /materialize/getting-started/overview
[Materialize]: /materialize/getting-started/overview
[Accelerated Queries]: /materialize/getting-started/overview#accelerated-queries
[Event Streams (Early Access)]: /materialize/getting-started/overview#event-streams
[Audit Logging]: ../concepts/audit-logging
[Automated Updates]: ../concepts/update-channels
[Management Dashboard]: ../concepts/management-dashboard
Expand Down
7 changes: 3 additions & 4 deletions app/materialize/getting-started/overview/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ AuthZed Materialize takes inspiration from the Leopard index component described
Much like the concept of a materialized view in relational databases, AuthZed Materialize is a service that you configure with a list of permissions that you want it to precompute, and it will calculate how those permissions change after relationships
are written (specifically, when those relationships affect a subject's membership in a permission set or a set's permission on a specific resource), or when a new schema is written.

Materialize puts that precomputed data to work in two ways: **Accelerated Queries** and **Event Streams**, both currently in early access. Every other piece of Materialize content belongs to one of these two features. Look for badges at the top of the page, which link back to the feature it belongs to.
Materialize puts that precomputed data to work in two ways: **Accelerated Queries**, generally available to AuthZed [Dedicated] users, and **Event Streams**, currently in early access. Every other piece of Materialize content belongs to one of these two features. Look for badges at the top of the page, which link back to the feature it belongs to.

<MaterializeArchitecture
role="img"
Expand All @@ -23,9 +23,8 @@ Materialize puts that precomputed data to work in two ways: **Accelerated Querie
## Accelerated Queries

<Callout type="info">
Accelerated Queries is available to users of AuthZed [Dedicated] as part of an early access
program. Don't hesitate to get in touch with your AuthZed account team if you would like to
participate.
Accelerated Queries is generally available to users of AuthZed [Dedicated]. Get in touch with your
AuthZed account team to get started.
</Callout>

Accelerated Queries use Materialize's precomputed permissions cache to answer the SpiceDB queries your application already makes, without changing how you call SpiceDB:
Expand Down
4 changes: 2 additions & 2 deletions app/spicedb/getting-started/faq/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,9 @@ There are three approaches for filtering resources based on whether users have a

2. **CheckBulkPermissions** - Use when accessible resources are too large for LookupResources. Fetch a page of candidate results from your database, then call `CheckBulkPermissions` to determine which ones the user can access. Keep iterating until you have a full page of permitted results. This works well with cursor-based pagination and search interfaces.

3. **Materialize** (Early Access) - For maximum scalability with large datasets or high traffic. Materialize watches permission changes in SpiceDB and maintains a local denormalized view of user permissions, allowing you to use simple database JOINs for filtering.
3. **Materialize's Event Streams** (Early Access) - For maximum scalability with large datasets or high traffic. Materialize watches permission changes in SpiceDB and maintains a local denormalized view of user permissions, allowing you to use simple database JOINs for filtering.

Choose based on your scale: start with LookupResources, move to CheckBulkPermissions when needed, and consider Materialize for the highest performance requirements. [Learn more]
Choose based on your scale: start with LookupResources, move to CheckBulkPermissions when needed, and consider Materialize's Event Streams for the highest performance requirements. [Learn more]

[Learn more]: ../modeling/protecting-a-list-endpoint

Expand Down
6 changes: 4 additions & 2 deletions app/spicedb/modeling/protecting-a-list-endpoint/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,9 @@ to the point where checking them via bulk check is relatively easy.
## Using Materialize

<Callout type="info">
Materialize is currently in Early Access. Additional documentation and product information will be
coming soon. In the meantime, if you're interested, [schedule a call!][Schedule Call]
This pattern uses Materialize's Event Streams feature, currently in early access for AuthZed
Dedicated users. See the [Materialize overview] to learn more, or [schedule a call!][Schedule
Call]
</Callout>

[Authzed Materialize] is Authzed's version of the [Leopard cache] referenced in the Zanzibar paper, which provides a denormalized view
Expand All @@ -113,6 +114,7 @@ under the above two approaches, we recommend giving Authzed Materialize a try.

[Schedule Call]: https://authzed.com/call
[Leopard cache]: https://authzed.com/zanzibar/2IoYDUFMAE:0:T
[Materialize overview]: /materialize/getting-started/overview#event-streams

## Other Considerations

Expand Down
36 changes: 3 additions & 33 deletions lib/changed-pages.json
Original file line number Diff line number Diff line change
@@ -1,44 +1,14 @@
{
"/materialize/api/client-sdks": {
"status": "updated"
},
"/materialize/api/download-permission-sets": {
"status": "new"
},
"/materialize/api/lookup-permission-sets": {
"status": "updated"
},
"/materialize/api/watch-permission-sets": {
"status": "updated"
},
"/materialize/concepts/hydration": {
"status": "new"
},
"/materialize/concepts/managing-client-state": {
"status": "updated"
},
"/materialize/concepts/permission-set-lifecycle": {
"status": "updated"
},
"/materialize/concepts/permission-sets": {
"status": "updated"
},
"/materialize/concepts/snapshots": {
"status": "updated"
},
"/materialize/concepts/watched-permissions": {
"status": "new"
},
"/materialize/getting-started/limitations": {
"/authzed/guides/picking-a-product": {
"status": "updated"
},
"/materialize/getting-started/overview": {
"status": "updated"
},
"/materialize/guides/recommended-architecture": {
"/spicedb/getting-started/faq": {
"status": "updated"
},
"/materialize/guides/relational-database": {
"/spicedb/modeling/protecting-a-list-endpoint": {
"status": "updated"
}
}
7 changes: 3 additions & 4 deletions lib/materialize-features.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,10 @@ export const FEATURES = {

export type FeatureKey = keyof typeof FEATURES;

/* Every feature is in early access today, so the note's text doesn't vary.
It's per-feature anyway because the note is colour-matched to its pill —
and because these will go GA on different dates. */
/* Per-feature because the note is colour-matched to its pill, and because
these go GA on different dates — Accelerated Queries reached GA first. */
export const EARLY_ACCESS: Record<FeatureKey, boolean> = {
"accelerated-queries": true,
"accelerated-queries": false,
"event-streams": true,
};

Expand Down
Loading