User Defined Functions and Triggers

Hello all,

I hope that everyone is doing well.

Recently, I came across Nebula Graph Database in my searching for a new and exiting Graph Database. I have also been looking at Dgraph (Native Graph Database) and Cayley (Graph Database Layered over different SQL backends) but need a very fast and hugely horizontally scalable graph database towards a P2P approach, or as close as I can get to it.

In any case, I have just started reading up on Nebula GDB but did not see any information on how to setup user defined functions and subroutines within the database, or possibly compiling external plugins that can contain these additional functions?

Also, I was wondering if Nebula offers the notion of “triggers” that can be fired when a node or edge becomes active to startup of an internal function.

Is there any information on this, or possibly any plans to include these in he near future?

Best Regards,
Lonnie

We do not support udf and trigger at this moment. However, you can ask for a feature here.

Hello Lonnie, thanks for considering Nebula Graph for your project and I hope you are well and safe! I’m sorry that we currently don’t support UDF and trigger due to priority. But we are definitely going to support it in the future as a mature solution.

As to this requirement, I think Nebula Graph is a perfect candidate.

Could you possibly elaborate on your specific requirements so that we may be able to meet your requirements in a different way?

Thanks and regards,
Jamie

Hi Jamie,

Thanks for replying to in post and it is good that you have UDF’s and triggers slotted for eventual inclusion.

The project, a try of internet search engine that is really more of a general purpose knowledge engine which gets and aggregates data from many different sources bask to the user from their query, had been initially under development but at some point it turned out that we were having too many different types of servers needing to maintain stability and cross communications which basically has too many moving parts to be viable.

I am now on a quest to find a viable, and preferably highly horizontally scalable graph database that has some of these properties already, or that we can compile in from the sources and create a specialized version.

One idea was to take a database code-base and build on some functionality (i.e. local web server, built in customer functions for hashing and other similar things, plugin extensions to be able to call out to external API’s for data to be aggregated bask into the results, etc…)

Ultimately, the idea is to have a single executable (if possible) that will house all of the functionality that is needed and keep everything as close to the core DB as possible to reduce all of the moving parts.

Still searching for a viable DB (Graph, NoSQL, or SQL) to begin with and use as the core to build from since it is highly unlikely that any DB will meet all of the requirements out of the box.

SIDE NOTE: The project is really towards building a Knowledge database in the spirit of the old Freebase plus many more live connections and data sources. Its more about the knowledge than it is website search links, but those will be cited sources. To this end, being highly distributed and scalable are very key.

Cheers,
Lonnie

Hi Lonnie, glad to see your reply with details on your project. Thanks for sharing!

It seems that the feature matters the most to you is linear scalability. And Nebula Graph happens to be able to scale in/out horizontally. I think you might be interested in the overall design of Nebula Graph to gain a basic idea of how it supports horizontal scaling:
https://docs.nebula-graph.io/manual-EN/1.overview/3.design-and-architecture/1.design-and-architecture/
Please let me know if you need more technical details. And if you are willing to try the Nebula Graph source code, we are always here to help.

Regards,
Jamie

Thanks again Jamie,

I think that I will give Nebula a try and see how it works out.

On your site, somewhere I think that I remember reading it, was an example to use Nebula with Discourse and that might be a nice small example to test out.

Of course, I will have to do a lot of additional reading on Nebula, but I would ultimately, as a first step if it is used over Dgraph or Graphd, would want to work toward being able to read in all (or at least a good subset) of the previous Freebase data that are in tuples, but that would be after testing out some things first.

Thanks again,
Lonnie

1 Like

Hi Lonnie, thanks for thinking about giving Nebula a try! Really appreciate that. We have a Get Stared series YouTube video tutorials available if you prefer videos to docs: https://www.youtube.com/playlist?list=PL4ArMmsAnb84uB2d9L46eXpIi7Epz2cfp

Again, if you come across any problem, feel free to ask us here or email me at [email protected].

Are you referring to our blog post on how to deploy a Discourse forum with global CDN? If so, that’s not an example of using Nebula Graph.

To import data to Nebula Graph, you can use our csv importer tool: https://github.com/vesoft-inc/nebula-importer

Please let me know if you need anything further. :slight_smile: