Skip to content
Open
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
9 changes: 7 additions & 2 deletions book/src/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
SuperDB is a new type of analytics database that promises an easier approach
to modern data because it unifies relational tables and eclectic JSON in a
powerful, new data model called [_super-structured data_](formats/model.md).
SuperDB's query language is a
[pipe SQL](https://research.google/pubs/sql-has-problems-we-can-fix-them-pipe-syntax-in-sql/)
adapted for super-structured data called [_SuperSQL_](super-sql/intro.md),
which is aspirationally backward-compatible with
[PostgreSQL](https://www.postgresql.org/).

> [!NOTE]
> The SuperDB implementation is open source and available as a
Expand All @@ -12,8 +17,8 @@ powerful, new data model called [_super-structured data_](formats/model.md).

Super-structured data is
* _dynamic_ so that data collections can vary by type and are not handcuffed by schemas,
* _strongly typed_ ensuring that all the benefits of a comprehensive type system
apply to dynamic data, and
* _strongly typed_ allowing static type checking and type-based query
optimizations to apply to dynamic data,
* _self-describing_ thus obviating the need to define schemas up front.

SuperDB has taken many of the best ideas of current data systems and adapted them
Expand Down
8 changes: 4 additions & 4 deletions book/src/super-sql/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -331,12 +331,12 @@ The array subquery produces an array value so it is often desirable to
[unnest](operators/unnest.md) this array with respect to the outer
values as in
```
from f1.json | unnest {outer:this,inner:[from f2.json | ...]} into ( <scope> )
from f1.json | unnest {outer:this,inner:[from f2.json | ...]} into ( <query> )
```
where `<scope>` can be an arbitrary pipe query that processes each
where `<query>` is an arbitrary pipe query that processes each
collection of unnested values separately as a unit for each outer value.
The `into ( <scope> )` body is an optional component of `unnest`, and if absent,
the unnested collection boundaries are ignored and all of the unnested data is output.
The `into ( <query> )` body is an optional component of `unnest`, and if absent,
the unnested collection boundaries are ignored and all of the unnested data is output as a combined sequence.

With the `unnest` operator, we can now consider how a [correlated subquery](https://en.wikipedia.org/wiki/Correlated_subquery) from
SQL can be implemented purely as a pipe query with pipe scoping.
Expand Down