![[CleanShot 2023-01-25 at 07.49.56@2x.png]]

  • Build a version of this chart that can be used to on-board new devs or as a reference

Cache

  • IO server, compiler, rush parser, and UI are what we call the EdgeQL server
  • Rust parser is maintained by compiler team
  • Compiler is in pure Python
  • filter name = <string>
    • string is extracted by parser so that cached query can still be leveraged if the string changes
  • cache is shared across all clients
    • limited to 1,000 entries
  • We cache prepared statement in SQL so we can reuse later
  • Query results are not cache
  • LRU- least recently used (is discarded)
  • SQL is stored as text in cache with a hash
    • Hash is used to see if a given Postgres connection

General

  • Server maps to edgedb/edgedb repo
  • Postgres uses vanilla postgres/postgres repo without any modifications
    • Support up to postgres version 13
  • edgedb-python for server-side tests
  • pg layer to support BI tools (new)
    • Doesn’t connect directly to the postgres server
  • EdgeDB binary protocol is the most common way to interface with the EdgeDB service
    • Used by all the clients
  • GraphQL, EdgeQL, binary, and notebook protocol can all be used over HTTP
    • notebook is legacy, used by the web site
    • binary takes binary over HTTP and sends back binary
      • used by EdgeDB UI
  • UI maps to edgedb-ui
    • UI is used by the web site
    • Cloud instances will share a single UI accessing the selected instance
  • edgedb/edgedb-docker
    • Can be managed by CLI
  • edgedb/nebula-ui will be different than edgedb-ui
    • Used to manage
  • edgedb/shared-test-case
    • Used to test all client bindings
  • Still discussing how to manage schema in production
    • Don’t want users to connect CLI to production to run migrations
    • Ongoing conversation
    • Can connect CLI to production, but Fantix doesn’t recommend it