-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support Nebula Graph #48
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: wey-gu <weyl.gu@gmail.com>
Thanks for this RFC @wey-gu After reading through this I got impression that this proposal is similar to adding RDS or Atlas integration. These have their pluses but serious downside is keeping feature coverage aligned across different backends which has not been great so far. From what I've got from this + reading through Amundsen PR of actual implementation maybe there is opportunity here that would just mean refactor of neo4j code which would enable us to use same components (but differently configured) with both neo4j and nebula (as they both speak opencypher)? This way nebula integration would always mean exact feature coverage as neo4j and be a nice oss alternative to it. |
Thanks @mgorsk1 for your time to look into the proposal! Indeed, I also had seen yet another backend storage increases the burden introducing new features during the implementation of the reference PR for the proposal, and I just told myself to keep eye on all PRs after it's merged and lift it from my own efforts then. While, as you pointed, it doesn't scale at all, and it in big chance is a good opportunity to make cypher-based backend with some level of abstractions to share codes when possible. I will take this context and purpose in mind and see what could be done on the refactor. There are some challenges that nebula only support OpenCypher as a dialect and reusing query string itself isn't directly possible(see here), while the mindset to per each read functions are similar, thus, find a way to decouple cypher-speaking DB implementation from code to configurations looks possible(and worth it). Thanks. |
Dear @mgorsk1, After I revisit everything, I think the refactor to best reuse cypher based GDB code is to break the functions in a I put some details as follow. What do you think, please? If it's good to go, I could then prepare for a PoC implementation. Thanks!
CypherAbstract Proxy
Something will be different compared to those in the current Neo4j proxy:
appendixMajor diffs for Query String:
- MATCH (f:foo {key: "foo_100"}) RETURN f
+ MATCH (f:foo) WHERE id(f) == "foo_100" RETURN f
- MATCH (f:foo) RETURN f.key
+ MATCH (f:foo) RETURN id(f)
- MATCH (f:foo) WHERE 1 = 1 RETURN f
+ MATCH (f:foo) WHERE 1 == 1 RETURN f
- MATCH (f:foo) RETURN f.name
+ MATCH (f:foo) RETURN f.foo.name
- MATCH (user:User) RETURN user
+ MATCH (`user`:`User`) RETURN `user` Major diffs in Result
|
Dear @mgorsk1, what do you think, please? PS. in case the refactoring is not feasible, I will try my best to maintain the nebula backend in my free time, I really like Amundsen and am willing to contribute more and more. |
Hey @wey-gu apologies for late reply & thanks for very detailed and thorough explanation. It's very much appreciated to have such eager community member 🙇 I do think it'd be really useful to have Nebula as an alternative especially given that lot's of goodies in neo4j is only available in commercial version. As for generalizing more it makes sense to have abstract cypher proxy with separate implementations taking into account these subtle differences. Maintenance of metadata proxy indeed should not be that much of a hassle - what's much more important in my view is we can reuse GraphSerializable models for Nebula. Extractors, Publishers & Loaders are usually one-time effort to prepare (unless you see a way to also reuse those). The pain starts when you need to catch up to GraphSerializable. I would still love some input from @feng-tao @dkunitsk or anyone who was involved in original neo4j implementation to see if this level of refactoring would be acceptable. |
Hey @wey-gu, what is the cost of using this database? |
Dear @Golodhros Thanks❤!
I think the costs(to users, if we are talking about this) are:
Thanks so much, I'll be happy/honored to implement this. BR//Wey |
What do you think @feng-tao, @kristenarmes and @allisonsuarez ? |
Add backend support of Nebula Graph, an Open Source, distributed Graph Database.