September 2022 Summaries
13 posts from Memgraph
Filter
Month:
Year:
Post Summaries
Back to Blog
Sasa Fister, a front-end engineer at Memgraph since early 2022, describes his seamless remote onboarding experience with the company, emphasizing the enjoyable and insightful interview process that drew him to the role. Previously a backend developer, Sasa transitioned to frontend development, contributing to projects like Memgraph Lab within the Platform team. He found the onboarding process well-organized and appreciated the balanced introduction to the company's products, environment, and tools, which facilitated a smooth acclimation. Sasa values the company culture, highlighting the openness, supportive organizational structure, and the collective effort of team members to build great products. He also commends his manager, Toni, for tailoring the onboarding to his learning preferences, enabling a swift and effective integration into the team.
Sep 30, 2022
767 words in the original blog post.
The latest release of Memgraph, version 2.4, introduces four major features aimed at enhancing user experience, alongside various bug fixes and improvements. Notably, it now supports returning all shortest paths with equal minimum weights, and label-based authorization in its Enterprise edition to enhance data security by managing user permissions. The new project() function allows users to create a projected graph for focused analytics, and a C++ API simplifies the creation of custom query modules while maintaining high performance. Additionally, improvements have been made to replication and the handling of ROUTE Bolt messages, with the toString() function now accurately converting temporal units in the Cypher query language. Users are encouraged to explore the accompanying blog posts and documentation for implementation details and to download the latest version to experience these updates firsthand.
Sep 28, 2022
384 words in the original blog post.
Memgraph has introduced a new graph projection feature that allows users to perform algorithms on specific subgraphs, addressing a growing demand for running queries on graph subsets. This feature is implemented through the project() function, which creates subgraphs by storing vertices and edges defined in a query's MATCH clause. The team navigated challenges in extending C API functions to handle projected graphs, ultimately opting for a solution leveraging C++17's std::variant for efficient data management and dynamic polymorphism. This innovation enables advanced graph analyses, such as PageRank and centrality metrics, on subgraphs without additional adjustments and supports machine learning applications using the Memgraph MAGE library. Despite initial complications in managing data types and structures, the feature promises enhanced performance and flexibility for users, fostering a broader scope of graph analysis and machine learning possibilities within Memgraph.
Sep 27, 2022
1,773 words in the original blog post.
The blog post by Bruno Sacaric explores the development and optimization of an "All Shortest Paths" algorithm for Memgraph, a platform used to analyze graphs. The focus is on finding all weighted shortest paths between nodes, accommodating scenarios where multiple paths of the same length exist. Initially, the team aimed to create a new query module within the MAGE library using the Dijkstra algorithm, optimized with parallel processing and a Fibonacci heap priority queue, resulting in a 20% performance increase. However, they shifted to integrating the algorithm directly into Memgraph's core, utilizing a cursor-based query plan to improve path ingestion efficiency. The algorithm's implementation involved addressing challenges such as setting an upper bound for search depth, ensuring it could differentiate states of visited relationships without slowing down performance. Users can employ this algorithm similarly to Memgraph’s existing Weighted Shortest Path algorithm, with the flexibility to create custom query modules using Memgraph’s C API, contributing to the MAGE library.
Sep 26, 2022
1,530 words in the original blog post.
Memgraph's summer internship program invited six students to join two teams, MAGE and MagicGraph, to work on graph algorithms and graph applications, respectively. The interns, who could choose to work remotely or in the office, learned a variety of technologies including Cypher, Docker, Kafka, and Python, and gained experience with tools such as Flask, FastAPI, and React. Projects included node classification for fraud detection, link prediction for telecom systems, GitHub code analysis, and a Hacker News Analyzer, all demonstrating real-world applications of graph databases. The successful completion of their projects culminated in a public presentation at the Graph Data Zagreb meetup, where the interns shared their experiences and achievements. Students praised the program's positive environment and the opportunity to apply theoretical knowledge to practical tasks, recommending the internship to others interested in graph theory and technology.
Sep 23, 2022
644 words in the original blog post.
In the blog post, Josip Mrden discusses the implementation of label-based access control in Memgraph, a graph database, emphasizing the importance of identity and access management for securing data as companies grow and data volumes increase. The article explores the necessity of authorization in databases to prevent data leakage and describes various types and levels of authorization, highlighting the challenges faced in implementing these controls over specific nodes and relationships in graph databases. Mrden outlines Memgraph's approach to setting granular access permissions based on corporate hierarchies, detailing different permission levels such as READ, UPDATE, and CREATE_DELETE, and discusses the implementation considerations of these permissions within the database's query execution mechanisms. He explains how the operator tree in query languages can be leveraged for authorization, focusing on specific operators like ScanAll and Expand, which require explicit authorization, while others like Filter and Produce do not. The post concludes with reflections on the balance between security and usability when handling unauthorized access notifications, encouraging readers to explore further resources on label-based access control and managing user privileges.
Sep 22, 2022
1,623 words in the original blog post.
Orb is an open-source graph visualization library developed to address specific use cases not met by existing tools, allowing users to easily visualize graphs in web browsers. It supports a variety of features such as rendering simple and custom-styled graphs, handling graph events, and managing dynamic graph data changes. Orb facilitates interactive graph manipulation through event subscriptions and offers two distinct views: DefaultView for a blank canvas and MapView for overlaying graphs on map backgrounds using the Leaflet library. Users can customize node and edge styles, set up event handlers for interactivity, and utilize functions to update or remove graph elements dynamically. Originally an internal tool for Memgraph Playground and Memgraph Lab, Orb is now available for public use and contribution, with its source code hosted on GitHub for those interested in its architecture and future updates.
Sep 15, 2022
2,225 words in the original blog post.
The text discusses the integration of a custom CSS-like language called Graph Style Script (GSS) for styling graphs within the Orb JavaScript library, which is used by Memgraph to visualize graphs in its products like Memgraph Playground and Lab. Originally, Orb allowed graph styling through JSON definitions and JavaScript callbacks, which posed limitations for users unfamiliar with coding, leading to the development of GSS. GSS simplifies the process by allowing users to define graph styles using a syntax similar to CSS, thus providing a more accessible, flexible, and efficient way to apply styles to nodes and edges based on properties and relationships. The article details the parsing and compilation processes of GSS, including lexical and syntax analysis, as well as semantic analysis and runtime error handling, and demonstrates how GSS can be used to replicate style rules initially implemented in JavaScript. It emphasizes the advantages of using GSS for defining constants, functions, and style rules, making graph styling more intuitive and adaptable for end-users, and encourages readers to explore GSS in Memgraph Lab to enhance graph visualization.
Sep 15, 2022
2,776 words in the original blog post.
In a bid to create an optimal graph visualization tool, the exploration of various JavaScript libraries revealed key contenders such as VisJS, D3, and SigmaJS, each with distinct advantages and limitations. VisJS, while popular and easy to use, struggles with performance and multithreading, making it unsuitable for large graphs and modern web-worker environments. D3.js stands out for its modularity and extensive documentation, although it requires a significant learning curve and manual handling for graph visualizations. SigmaJS offers impressive speed and performance through WebGL but suffers from limited documentation and reliance on Graphology for graph layout. Despite other notable options like Cosmos and Cytoscape, which either lacked styling capabilities or multithreading support, the decision was made to develop a custom library, Orb, leveraging D3's simulation power and a custom rendering engine derived from Vis, to meet specific styling needs with their Graph Style Script (GSS). This custom solution demonstrated significant performance improvements when integrated into Memgraph Lab v2, achieving faster processing times and providing a more flexible and scalable graph visualization framework.
Sep 15, 2022
2,799 words in the original blog post.
In the pursuit of developing a robust graph visualization engine, the creators of Memgraph Lab initially faced challenges with Vis.js, a deprecated library that hindered performance and user experience. Consequently, they developed Orb, a custom library designed to address these issues by utilizing d3-force for graph layout calculations and WebWorkers to offload computational tasks, thus preventing application blockage. Orb is structured into three main components: Data, which manages in-memory graph structures; View, which handles graph layout and rendering via HTML5 Canvas; and Events, which facilitates interaction through event subscriptions. The library supports customization through different views, including a default view and a map view utilizing Leaflet, and it plans to integrate WebGL rendering in the future. Orb is packaged for easy integration into JavaScript/TypeScript projects, and developers are encouraged to contribute by creating custom views.
Sep 15, 2022
2,109 words in the original blog post.
Graph Data Zagreb recently hosted an event consisting of two key parts: a presentation on data lineage using a graph database by Manta, delivered by David Bucek and Jan Žák, and project showcases by Memgraph summer interns. The interns presented diverse projects, including node classification for fraud detection, link prediction in telecom recommender systems, GitHub code analysis, a Hacker News analyzer, and a docs recommendation system. The event concluded with networking over hamburgers and beer. For those who missed the Manta presentation, Memgraph plans to host a webinar, and the Graph Data Zagreb group encourages new members to join and participate in future events.
Sep 08, 2022
226 words in the original blog post.
MAGE, which stands for Memgraph Advanced Graph Extensions, is an open-source library designed to enhance the functionality of graph algorithms, providing developers with a user-friendly interface across multiple programming languages. Developed by a dedicated team at Memgraph, the library aims to become a leading tool in the world of graph analytics by offering ready-to-use algorithms for exploring and inferring information from graphs. The team behind MAGE, including individuals like Fico, Ante, and Josip Matak, collaborates closely to research, develop, and implement new features, fostering an environment of mutual support and creativity. Memgraph is praised for its motivating atmosphere, skilled personnel, and collaborative culture, which significantly contribute to the development of innovative solutions like MAGE. This blog post serves as a tribute to Josip Matak's contributions to the project, highlighting the collective effort and passion that drive the team to continually enhance their product.
Sep 02, 2022
859 words in the original blog post.
In 2005, the development of Git emerged as a response to the limitations of BitKeeper, the software initially used by Linux kernel developers for source control management. Created by Linus Torvalds, Git is a free and open-source distributed version control system, designed to handle projects of varying sizes with speed and efficiency. The article provides guidance on initializing a Git repository and using basic Git commands such as `git init`, `git add`, and `git commit` to track changes in files. It also introduces GitHub as a cloud-based platform that extends Git’s capabilities, facilitating collaborative software development. The text underscores the importance of creating and managing branches for efficient collaboration and highlights further learning resources, including a video by CTO Marko Budiselić for those looking to deepen their understanding of GitHub, particularly in contributing to projects like Memgraph.
Sep 01, 2022
1,088 words in the original blog post.