You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: grafast/website/news/2023-10-13-grafast-0.1.mdx
+15-11
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@ import styles from "@site/src/css/common.module.css";
15
15
16
16
<pclassName={styles.intro}>
17
17
18
-
Gra*fast* is finally here — a new holistic execution engine for GraphQL. It enables greater efficiency across the entire backend stack by leveraging the declarative nature of GraphQL to give your business logic a better understanding of everything it needs to do. It‘s backwards compatible, so you can adopt it incrementally within your existing schema and it‘s finally ready to try with [the `grafast` module on npm](https://www.npmjs.com/package/grafast); or check out [the source code on GitHub](https://github.com/graphile/crystal/tree/main/grafast/grafast)!
18
+
Gra*fast* is finally here — a new holistic execution engine for GraphQL. It enables greater efficiency across the entire backend stack by leveraging the declarative nature of GraphQL to give your business logic a better understanding of everything it needs to do. It’s backwards compatible, so you can adopt it incrementally within your existing schema and it’s finally ready to try with [the `grafast` module on npm](https://www.npmjs.com/package/grafast); or check out [the source code on GitHub](https://github.com/graphile/crystal/tree/main/grafast/grafast)!
19
19
20
20
</p>
21
21
@@ -39,23 +39,23 @@ Gra*fast* is finally here — a new holistic execution engine for GraphQL. I
39
39
40
40
## Gra*fast* Working Group
41
41
42
-
There‘s still decisions to be made and edges to be smoothed before Gra*fast* can become a specification that can be implemented in any language. If the potential of this technology is interesting to you, please [join the Gra*fast* working group](https://github.com/grafast/wg) and get involved. We all deserve our future of easy GraphQL execution efficiency!
42
+
There’s still decisions to be made and edges to be smoothed before Gra*fast* can become a specification that can be implemented in any language. If the potential of this technology is interesting to you, please [join the Gra*fast* working group](https://github.com/grafast/wg) and get involved. We all deserve our future of easy GraphQL execution efficiency!
## “GraphQL’s execution model is wrong for most servers”
49
49
50
50
GraphQL is a declarative language; the requests specify everything that the client is asking for up–front.
51
51
52
52
But the resolver–based execution model **_obfuscates_** this knowledge — when implemented naively, resolvers can very quickly result in serious performance issues; and even when implemented well they leave a lot to be desired.
53
53
54
54
DataLoader is one of the suggested approaches to solve the “N+1 Problem” but this is only the most egregious performance issue a GraphQL schema may face — there are plenty of related issues that can build up as your schemas and operations get more complex.
I set out not only to solve the well–known N+1 problem and the more subtle under– and over–fetching problems, but to help you achieve the most efficient execution for your GraphQL schema no matter what data sources you’re working with! The solution? Leverage the declarative nature of GraphQL via a new general purpose query planner.
## “Step aside resolvers! There’s a new way to execute GraphQL”
59
59
60
60
<figure>
61
61
@@ -70,7 +70,7 @@ Grafast calls “plan resolvers” to determine the requirements for eac
70
70
71
71
Gra*fast* has been designed from the ground up to give schema designers the tools they need to ensure their schemas are executing as efficiently as possible, whilst ensuring that writing their logic is still a pleasant experience. To achieve this, Gra*fast* favours a planning strategy which takes a holistic approach to understanding the incoming operation and unlocks the potential for significant optimizations: optimizations that are not achievable with a resolver–based execution model unless one puts in herculean effort (and a little sorcery 😉).
Gra*fast*, like GraphQL, is not specific to any particular technology stack, business logic shape or data storage layer. It doesn’t care if you’re using relational databases, document stores, ORMs, HTTP APIs, file systems or _[carrier pigeons](https://datatracker.ietf.org/doc/html/rfc1149)_. Any valid GraphQL schema can be implemented with Gra*fast*, and a Gra*fast* schema can query any data source, business logic or service.
74
74
75
75
Though it supports traditional resolvers, Gra*fast* encourages developers to use “plan resolvers”: small functions similar to resolvers but which describe the required data, rather than actually fetching it.
76
76
@@ -102,14 +102,18 @@ This greater understanding of the needs of the GraphQL requests unlocks entire n
102
102
GraphQL world.
103
103
</strong>
104
104
</p>
105
-
— Sean Grove (@sgrove) <ahref="https://twitter.com/sgrove/status/1696572548803162477?ref_src=twsrc%5Etfw">August 29, 2023</a>
Gra*fast* already works and some of my [sponsors](https://graphile.org/sponsors) are already running it in production. You can try it out today by following the guide at [grafast.org](https://grafast.org). All that‘s left for me to say now is, if the potential of this new technology is interesting, then please:
116
+
Gra*fast* already works and some of my [sponsors](https://graphile.org/sponsors) are already running it in production. You can try it out today by following the guide at [grafast.org](https://grafast.org). All that’s left for me to say now is, if the potential of this new technology is interesting, then please:
113
117
114
118
## Help shape the future on 24th October and join the [Gra*fast* working group](https://github.com/grafast/wg)!
0 commit comments