3 ms·
If you want a production-grade graph DBMS, you don't have that many OSS options that are reliable and well-supported. In the relational space, it took OSS opti
by smarx007 1y ago
If you want a production-grade graph DBMS, you don't have that many OSS options that are reliable and well-supported.
In the relational space, it took OSS options like Postgres many decades (and somehow paid-for person-years) to get to a place where enterprises seriously consider migrating off Oracle to it.
- jcgrillo 1y agoAre there any? My experience so far with graph databases is a resounding failure.
- XorNot 1y agoIn OSS or generally?
- jcgrillo 1y agoEither, tbh?
- UltraSane 1y agoI'm using Neo4j to build a CMDB and it is awesome.
- jcgrillo 1y agoThat's good to hear, how large is the graph you're building (nodes, edges) and how do queries perform?
- lolive 1y agoThe big issue we have had with Neo4J was with replication, when we do MASSIVE updates. For the rest, it handles the charge reasonably well.
- jcgrillo 1y agoWhat constitutes a massive update?
- UltraSane 1y agoNot very big since it is only used internally at my company. 5 digit node count and high 6 digit relationships count. Queries are usually very fast unless you try to do something stupid that ends up having to search the entire graph. indexing critical high-cardinality properties and thinking of relationships as a kind of index help a lot with query performance. I have been meaning to test how fast memgraph is.
- jerryseff 1y agoWhat is a "CMDB"?
- UltraSane 1y agoA Configuration Management Database (CMDB) is a centralized repository that stores information about Configuration Items (CIs), including their attributes and relationships. It's a key component of IT service management (ITSM), providing visibility into the components that make up IT services, like hardware, software, and documentation
- jerryseff 1y agoInteresting!
- UltraSane 1y agoIt can be incredibly useful. One example is to have every every process linked to the VM it is running on and the host the VM is running on and the TCP port the process is listening on. If you have all the correct relationships defined then you can write a query like this to find every process on every VM listening on port 80 on a given VM host. MATCH p = (host:VMHOST {name: 'your_host_name'})-[:RUNS]->(vm)-[:HAS_SERVICE]->(service)-[:EXPOSES_PORT]->(port:TCPPORT {port: 80}) RETURN p This can save a absurd amount of time for analyzing the impacts of failures and security isolation compliance.