@Jon_Herke
I want to throw in a few cents here, cause I’ve been trying to migrate to Tiger for a few days now and also bumped up against this concern. I’m excited by so much of the graph performance and features, but some design decisions like this one have frustrated my adoption process to the point of giving up after a few days of effort in several directions (trying cloud, then building out EE, building schemas in Graph Studio then GSQL, then trying to operate on graph with built-in endpoints).
OO languages scope field names to classes. Since classes and fields are used to represent data and relationships in code, it holds that we’d often reuse the same values to represent ‘edges’ between different sets of models - for instance, every codebase I’ve ever touched has used the field ‘user’ or similar to represent an edge relationship between many models and type User. But not all models, which also matters for robustness and security.
A lack of similar syntactic scope on the graph is pretty unintuitive, and it’s a hard block because we lose either natural JSON de/serialization or schematic clarity. Wildcard edges as a substitute violate our natural data scopes and principles of least privilege, which hurts our ability to construct robust data systems at scale.
I’ve found similar issues elsewhere - for instance, I find it really confusing that there’s no natural way to represent one-to-one relationships, enums, or unique values. And that the query/upsert schema is so far from a natural serialization of models that it feels pretty intractable to save or retrieve application data in a generified way…I think it basically takes custom codegen since upserts require inserting a ‘value’ object for each attribute (equally complex to handle GraphQL endpoint with native models since edges are represented as types, when they are most often attribute-less fields in code).
In addition to these schema and query design issues, there are other significant practical concerns that drive up adoption efforts for app developers like me, some of which I noted elsewhere: no JWT claims support (gotta write custom middleware), no subscriptions for reactive design (gotta build [time, cost, network traffic] expensive intermediate service), GSQL features out of sync with GraphStudio (had to try/fail to match edges to models in both because reverse_edge limitations), and $11k minimum yearly cost for cloud persistence (!!! - gotta spin up EE Free, though EE setup is awesomely easy).
I think it’s important to share that, as a developer focused on building scalable, unified data contexts for modern web/app businesses, I can’t justify the overhead and schematic fuzziness of interoperating with TG in its current form even though so much of the feature set makes me want to commit. It’s clear you’ve had a ton of success designing around analytics and data ingestion for existing datasets, but it really feels like the programmatic needs and data pipelines of modern app developers were kinda ignored…despite them being the core driver of growth in your existing tangible markets.
I hope these designs are refined with time - particularly those necessary to support our existing models with standard serialized object queries - because the product otherwise looks so powerful and primed for our rapidly growing data system needs as well. I’m really excited to get it working…but it’s a shame that it took so much effort digging through docs and trying things out to even grok the extent of these limitations vs. other relational/graph databases for app development.