My RDBMS experience is nearly exclusively Postgres
While working on this project, I've made the assumption that the structure
of a database is:

Database -> Schema -> Table

It turns out that this isn't accurate. In MySQL for instance, "Schema" is
an alias for "DB".
>From the below StackOverflow answer, it seems like this is all over the
place:

https://stackoverflow.com/a/7944489/13485494

I have a "CalciteSchemaManager" object which has a "rootSchema" to which
all datasources are attached
This "rootSchema" is used to generate the GraphQL API and types

It seems like I have two options, and I'm not sure which is a better design:

1. Force all datasources to conform to (Database -> Schema -> Table)

This means that adding a new MySQL database, would generate ("mysql_db" ->
"root" (fake schema) -> "some_table")
Adding a CSV schema too, would be something like ("csv_datasource" ->
"root" -> "some_csv_file")

2. Have an irregular data shape. Datasources can be of arbitrary sub-schema
depth.

Example Postgres: ("pg_db_1" -> "public" -> "user")
Example MySQL:   ("mysql_db_1" -> "user")
Example CSV: ("some_csv_file") or maybe ("csv_source_1" -> "some_csv_file")

What do you folks think I ought to do?
Thank you =)

Reply via email to