Git Product home page Git Product logo

docs's Introduction


license license license

Discord

๐Ÿ“‹ Description

Memgraph is an open source graph database built for real-time streaming and compatible with Neo4j. Whether you're a developer or a data scientist with interconnected data, Memgraph will get you the immediate actionable insights fast.

Memgraph directly connects to your streaming infrastructure. You can ingest data from sources like Kafka, SQL, or plain CSV files. Memgraph provides a standard interface to query your data with Cypher, a widely-used and declarative query language that is easy to write, understand and optimize for performance. This is achieved by using the property graph data model, which stores data in terms of objects, their attributes, and the relationships that connect them. This is a natural and effective way to model many real-world problems without relying on complex SQL schemas.

Memgraph is implemented in C/C++ and leverages an in-memory first architecture to ensure that youโ€™re getting the best possible performance consistently and without surprises. Itโ€™s also ACID-compliant and highly available.

โšก Features

  • Custom query modules - Run Python, Rust, and C/C++ code natively; check out the MAGE graph algorithm library.
  • Deep-path traversals - Use advanced capabilities such as accumulators and path filtering without adding additional application logic.
  • Native support for machine learning
  • Streaming support & dynamic algorithms
  • Multi-tenancy
  • High availability replication
  • Authentication & authorization
  • Role-based and label-based access control
  • Monitoring via HTTP server

๐ŸŽฎ Memgraph Playground

You don't need to install anything to try out Memgraph. Check out our Memgraph Playground sandboxes in your browser.

Memgraph Playground

๐Ÿ’พ Download & Install

Windows

Windows Windows

macOS

macOS macOS

Linux

Linux Debian Ubuntu Cent OS Fedora RedHat

You can find the binaries and Docker images on the Download Hub and the installation instructions in the official documentation.

โ˜๏ธ Memgraph Cloud

Check out Memgraph Cloud - a cloud service fully managed on AWS and available in 6 geographic regions around the world. Memgraph Cloud allows you to create projects with Enterprise instances of MemgraphDB from your browser.

Memgraph Cloud

๐Ÿ”— Connect to Memgraph

Connect to the database using Memgraph Lab, mgconsole, various drivers (Python, C/C++ and others) and WebSocket.

๐Ÿ”ฌ Memgraph Lab

Visualize graphs and play with queries to understand your data. Memgraph Lab is a user interface that helps you explore and manipulate the data stored in Memgraph. Visualize graphs, execute ad hoc queries, and optimize their performance.

Memgraph Cloud

๐Ÿ“ Import data

Import data into Memgraph using Kafka, RedPanda or Pulsar streams, CSV and JSON files, or Cypher commands.

๐Ÿ“‘ Documentation

The Memgraph documentation is available at memgraph.com/docs.

โ“ Configuration

Command line options that Memgraph accepts are available in the reference guide.

๐Ÿ† Contributing

Welcome to the heart of Memgraph development! We're on a mission to supercharge Memgraph, making it faster, more user-friendly, and even more powerful. We owe a big thanks to our fantastic community of contributors who help us fix bugs and bring incredible improvements to life. If you're passionate about databases and open source, here's your chance to make a difference!

Compile from Source

Learn how to download, compile and run Memgraph from source with the Quick Start guide.

Explore Memgraph Internals

Interested in the nuts and bolts of Memgraph? Our internals documentation is where you can uncover the inner workings of Memgraph's architecture, learn how to build the project from scratch, and discover the secrets of effective contributions. Dive deep into the database!

Dive into the Contributing Guide

Ready to jump into the action? Explore our contributing guide to get the inside scoop on how we develop Memgraph. It's your roadmap for suggesting bug fixes and enhancements. Contribute your skills and ideas!

Code of Conduct

Our commitment to a respectful and professional community is unwavering. Every participant in Memgraph is expected to adhere to a stringent Code of Conduct. Please carefully review the complete text to gain a comprehensive understanding of the behaviors that are both expected and explicitly prohibited.

We maintain a zero-tolerance policy towards any violations. Our shared commitment to this Code of Conduct ensures that Memgraph remains a place where integrity and excellence are paramount.

๐Ÿ“œ License

Memgraph Community is available under the BSL license.
Memgraph Enterprise is available under the MEL license.

๐Ÿ‘ฅ Community

Back to top

docs's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docs's Issues

Add RETURN statements in MAGE procedures

Add RETURN after YIELD for each of the MAGE procedure code examples. Example:
Weakly connected components

CALL weakly_connected_components.get()
YIELD node, component_id;

An example case of when the above is not working (on Pandora dataset):

MATCH p=(e:Entity)-[:JURISDICTION_IN]->(:Country)
WHERE e.icij_id="7A15CC81D9DA787D79F94E5487CC47C9"
WITH project(p) as subgraph
CALL weakly_connected_components.get(subgraph)
YIELD node, component_id;

Error message: Query should either create or update something, or return results!

If the above is changed to:

MATCH p=(e:Entity)-[:JURISDICTION_IN]->(:Country)
WHERE e.icij_id="7A15CC81D9DA787D79F94E5487CC47C9"
WITH project(p) as subgraph
CALL weakly_connected_components.get(subgraph)
YIELD node, component_id
RETURN node, component_id;

then it works.

Hence, the code snippet in docs needs to change to:

CALL weakly_connected_components.get()
YIELD node, component_id
RETURN node, component_id;

cypher-query-language.md references WHERE EXISTS that, ironically, does not exist

Question:
On https://github.com/memgraph/docs/blob/master/cypher-manual/cypher-query-language.md, the query:

MATCH (p:Person)
WHERE EXISTS {
  MATCH (p)-->(c:Country)
  WHERE c.name = 'UK'
}
RETURN p;

throws an exception: Query failed: line 2:14 mismatched input '{' expecting {, ';'}
Also throws it for the second query, with a one-line subquery
Did we drop support for WHERE EXISTS?

Marko B explained that: we never supported that, evaluating a pattern/subclause as a function argument is not supportedโ€ฆ the situation is a bit better now because you can do the same by executing custom function

T0716-DX - Document BFS and DFS in Cypher manual

While searching through the documentation, I expected to find some info about the BFS and DFS algorithms in the Cypher manual. It would be good to document it somewhere inside the Cypher manual.

[BUG] Potentially wrong use of BFS in reference guide

https://github.com/memgraph/docs/blob/master/docs/reference-guide/graph-algorithms.md

Here, under Breadth First Search, under code:
MATCH (a {id: 723})-[edge_list:Type *bfs..10]-(b {id: 882}) RETURN *;
it says:
"The above query will find all paths of length up to 10 between nodes a and b"
and then goes on:
To find only the shortest path, simply append LIMIT 1 to the RETURN clause.
MATCH (a {id: 723})-[edge_list:Type *bfs..10]-(b {id: 882}) RETURN * LIMIT 1;

The Issue (I think) is:
BFS always returns only the shortest path, and LIMIT 1 has no effect there.

Fix broken links in How-to guides / Use SSL encryption and Reference guide / SSL encryption

There is a broken link on the page https://memgraph.com/docs/memgraph/next/how-to-guides/encryption. In step 2 link Copy the SSL certificate inside of the Docker container doesn't work. The destination link should be https://memgraph.com/docs/memgraph/next/how-to-guides/work-with-docker#how-to-copy-files-from-and-to-a-docker-container.

In the reference guide https://memgraph.com/docs/memgraph/next/reference-guide/encryption the link move them into a Docker container has a wrong anchor, the correct one is how-to-copy-files-from-and-to-a-docker-container.

Also, should the sentence "If you are using Docker and want to use your own certificates, you need to move them into a Docker container in order to utilize them." If you are using Docker and want to use your own certificates, you need to copy them into a Docker container in order to utilize them."

Provide link between specific algorithm's docs on MAGE

One algorithm has multiple description points on MAGE docs. One is under ...docs/mage/query-modules/cpp/X and other part is on
.../docs/mage/algorithms/traditional-graph-analytics/X. Provide links from one to the other since no such link exists.

@vpavicic check if I described the issue correctly, and update if necessary

Movie recommendation typo

At movie recommendation tutorial there are two mistakes:

1. Mistake:
This is not correct:
6. Average scores for first 10 movies:

MATCH (:User)-[:Rating]->(movie:Movie)
RETURN movie.title, avg(r.score) AS score
ORDER BY score DESC
LIMIT 10;

This would be correct (Missing variable name) :

MATCH (:User)-[r:Rating]->(movie:Movie)
RETURN movie.title, avg(r.score) AS score
ORDER BY score DESC
LIMIT 10;

2. Mistake:
This is not correct:
7. Create a new user and rate some movies:

MATCH (u:User {id:1000}), (m:Movie {title:'Mr. Holland's Opus'})

This would be correct (Double instead of single quotes):
MATCH (u:User {id:1000}), (m:Movie {title:"Mr. Holland's Opus"})

Page Not Found for graph algorithms

These two pages are Not Found:

  1. https://memgraph.com/docs/memgraph/reference-guide/graph-algorithms
  2. https://memgraph.com/docs/memgraph/under-the-hood/graph-algorithms

I get to 1. when I google "memgraph dfs" or "memgraph bfs" or "memgraph wshortest", it is the first result.
I believe it should be https://memgraph.com/docs/memgraph/reference-guide/built-in-graph-algorithms

The 2. is when I use our docs search bar for "graph algorithms", this is also the first result.
I see that when I click the link or go through google it redirects to https://memgraph.com/docs/memgraph/reference-guide/built-in-graph-algorithms, and that works, but the same redirection does not happend when using our search bar.

Invalid method in code when trying to reproduce flow for creating a C++ query module

https://memgraph.com/docs/memgraph/reference-guide/query-modules/implement-custom-query-modules/custom-query-module-example#readable-procedures

extern "C" int mgp_init_module(struct mgp_module *module, struct mgp_memory *memory) {
  try {
    mgp::memory = memory;

    AddProcedure(RandomWalk, "get", mgp::ProdecureType::Read,
                 {mgp::Parameter("start", mgp::Type::Node), mgp::Parameter("length", mgp::Type::Int)},
                 {mgp::Return("random_walk", mgp::Type::Path)}, module, memory);
  } catch (const std::exception &e) {
    return 1;
  }

 return 0;
}

return 0; was missing

mg_import incomplete documentation

When creating docker volumes the first argument of the -v flag is the absolute path to the directory.
In the following link: https://memgraph.com/docs/memgraph/import-data/csv-import-tool#how-to-use-the-csv-import-tool we don't even explain what mg_import directory is, or where should it be created, or how a user should use it. mg_import and mg_lab should be absolute paths on the host machine, e.g. /home/medo/repos/memgraph/debug/import_directory. I think we should replace those instances with a clear documentation. mg_import would become <absolute-path-to-import-directory-on-host-machine>.

Not all MERGE clause options are documented

While working on GQLAlchemy, Boris noticed that not all MERGE clause options are documented.

Merging with ON CREATE SET and ON MATCH SET with the same properties set to the same value is actually the same as one SET clause:

Example - the following query:

MERGE (p:Person {name: 'Angela'})
ON CREATE SET p.notFound = TRUE
ON MATCH SET p.notFound = TRUE;

is the same as the below query:

MERGE (p:Person {name: 'Angela'})
SET p.notFound = TRUE;

Hence, by following the Cypher grammar, with MERGE you can have ON CREATE SET, ON MATCH SET, ON CREATE SET and ON MATCH SET, and just SET.

This is also possible:

MERGE (p:Person {name: 'Angela'})
    ON CREATE SET p.notFound = TRUE
    ON MATCH SET p.notFound = TRUE
SET p.notFound = FALSE

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.