4 ms·
To answer your first question, the main difference between Memgraph and Dgraph seem to be: 1. The graph model: Property graph for Memgraph vs RDF for DGraph (D
by karimtr 6y ago
To answer your first question, the main difference between Memgraph and Dgraph seem to be:
1. The graph model: Property graph for Memgraph vs RDF for DGraph (Depending on the use-case you have one model might be better than the other. E.g ontologies are better served with RDF, whereas graphs with a lot of properties and labels are better served by the property graph model)
2. Memgraph is an in-memory first system where is Dgraph is a disk-based system. Again depending on your use-case and the performance you are looking for, an in-memory system might be better suited.
3. Query language & Ecosystem: we support Cypher and the Bolt Protocol (Same as Neo4j) so we work with a lot of the existing graph tools.
In terms of performance, we don't have official benchmarks yet but we have a few clients that test Memgraph and Dgraph and reported a 3-5x in read performance and about an 8x in write performance for their specific workloads.
I hope this answers your question.
- karimtr 6y agoSorry, I missed the second part of you question. You should be able to use the Neo4j GraphQL with Memgraph although we didn't fully test it yet(https://github.com/neo4j-graphql/neo4j-graphql https://github.com/neo4j-graphql/neo4j-graphql).
- micheldiz 6y agoHi guys, I'm community support at Dgraph. Reading that question. I come to clarify some points. First of all, I don't particularly know Memgraph internally. So, I'll stick to Dgraph and related only. About Karimtr's reply 1. The graph model: Although Dgraph uses RDF as input data. Dgraph is not a Triple Store per se - and the RDF we have is a customized version, which means that it is not 100% compatible with any RDF model (e.g. Turtle RDF) - But eventually, many RDF syntaxes may be compatible. The decision to use RDF was made a long time ago, for reasons that I am particularly unaware of. It was long before I joined Dgraph. We also accept JSON as data input. By the way, I also don't understand why Neo4j uses CSV as input data since it is not a Graph standard. RDF itself would be more acceptable than CSV. I assume they use CSV for strategic reasons. 1.1 In practice Dgraph is technically a "Property graph" like. There are no fundamental differences between the Dgraph's graph model with Neo4j other than the language itself and the way the data is stored and injected. 1.2 In Dgraph the data is stored in KV using BadgerDB. 1.3 Ontologies can be represented in any GraphDB. The difference is that Triple Store DBs have a language created to infer data specifically with the concept of ontology. And Triple Stores has standardized data input for this. 2. That's right. However, I think we will soon have the option to keep it in memory. But I don't particularly know how useful this is. Today you can keep some Memory first data, but with the guarantee that they will be saved on disks. This helps in performance when there is no use of NVMe. 3. We have GraphQL+- which is a rich language and inspired by GraphQL. And we also have GraphQL which is an "API" language that is now native in Dgraph. A friendly front-end language. And it works "out of the box" once you mount your schema. Dgraph creates a CRUD model based on your Schema. This reduces production time for your application and less logic on your business side. We are still adding "Black Magic" so that the experience in producing APPs is exceptional. And less code typing. About performance. I suggest doing a test against ludicrous mode https://discuss.dgraph.io/t/sharing-some-numbers-from-the-ludicrous-mode/6310?u=micheldiz https://discuss.dgraph.io/t/sharing-some-numbers-from-the-lu... Cheers.
- karimtr 6y agoHey Michel, thanks for joining the conversation and clarifying things. I'm far from being an expert on Dgraph so I learned a few things from your answer. Regarding the data model, that makes sense. I read that Dgraph support properties so I thought you built something along the lines of the RDF+ framework with seems to support properties and labels. Yes, you're right, ontologies can be represented in any graph but it's clear that RDF is a better option due to the reasons you mentioned and other ones. That's the nice thing about the emergence of different graph databases, you get to pick the right system for the right job :) When it comes to performance, to be honest, I'm not a big fan of random benchmarks, as it's always tricky to get them right, especially for systems that have big differences. We usually let developers do that for their specific use-cases and we just try to help them set up Memgraph as best as possible. Cheers.
- micheldiz 6y agoNice, I didn't know about Memgraph. I gonna try it out, there is some video showing the goodies? I'm with your docs in hands, need to finish some tasks and I gonna check it out! Cheers!
- houzi 6y agoI really like dgraph. Even amidst some rapid development for graphql integration, dev team has been quick to respond to issues. Was happy to see the continued Jepsen testing. Now that the frontend devs have gotten their attention, I hope dgraph plans to give the python community some love as well by improving the client API and asyncio support and even full integration with networkx.
- anualvis 6y agoYay! Thanks for the love :) :). Did you try filing an issue here https://github.com/dgraph-io/dgraph https://github.com/dgraph-io/dgraph with specific features you would like to see? We will try to prioritize if we see the traction from a lot of users.