February 2016 Summaries
21 posts from Neo4j
Filter
Month:
Year:
Post Summaries
Back to Blog
The text discusses the differences between data modeling for relational databases and graph databases. It explains that graph databases support a flexible and fine-grained data model, allowing for easy and intuitive representation of rich domains. In contrast, relational databases often require denormalization to improve performance, which can lead to complexity and resistance to rapid change. Graph databases, on the other hand, enable a more accurate representation of the domain, with a focus on capturing relevant roles, attributes, and connections as relationships. The text provides examples of data center management domains modeled using both relational and graph data models, highlighting the benefits of the graph approach in terms of simplicity, expressiveness, and adaptability to changing requirements.
Feb 29, 2016
2,521 words in the original blog post.
The 5-Minute Interview: Matthew Harris, CTO of Patheer`
Matthew Harris, the CTO of Patheer, discussed the company's use of Neo4j to map skills to careers and help people advance their careers. He attributed the choice of Neo4j to its ease of programming languages, community support, and APIs available. The scalability and frequent upgrades of Neo4j have been particularly surprising and beneficial for Patheer. Harris reflected on how his initial skepticism towards NoSQL databases was replaced by understanding the purposes of graph databases and their suitability for relating things together. He emphasized that graph databases are ideal for applications based on people and relationships, such as those found in careers and networking, making them a better choice than relational databases like RDBMS.
Feb 26, 2016
619 words in the original blog post.
At Artfinder, a global online marketplace for original art, the company has launched 'My Artfinder', a personalized recommendations system that uses Neo4j to provide users with daily artwork suggestions. The system was developed using collaborative filtering and graph databases, which proved to be more effective than traditional machine learning methods due to the complexity of artwork classifications. The use of Neo4j's Cypher query language simplified query construction and analysis, allowing for faster development and iteration. By optimizing queries and reducing cardinality of results, the system achieved significant improvements in performance, enabling thousands of users to receive relevant recommendations daily.
Feb 25, 2016
1,109 words in the original blog post.
For more videos from GraphConnects, check out graphconnect.com. I've worked for the Neo4j team for over three years as a field engineer and will discuss worst practices and share stories to help you avoid common pitfalls when using Neo4j. When onboarding with Neo4j, it's essential to avoid testing the database for the first time on a mission-critical project, working with team members without graph database experience, ignoring business requirements, skipping training, and applying relational database logic. These mistakes can lead to significant problems in your graph database. Additionally, you should be cautious when using Neo4j as a BLOB store, hiding aspects in your data model, and indexing everything. Furthermore, avoid using Cartesian products in Cypher queries, test your code thoroughly, deploy Neo4j correctly, and understand the concept of clustering. Finally, don't live on the dark side of the community by joining meetup groups, discussing challenges on Google Groups, or asking questions on Stack Overflow with the Neo4j tag.
Feb 24, 2016
2,643 words in the original blog post.
The latest release of Spring Data Neo4j, version 4.1, introduces significant improvements, including support for different protocol drivers, allowing users to use the Neo4j embedded database again as an alternative to communicating with the Neo4j server over HTTP. This feature is particularly useful for unit testing and also enables the use of the new binary Bolt protocol for Neo4j 3.0. The release also provides full support for rich relationship entities, which enable users to map relationships to annotated entity types and create, load, and save them as first-class citizens. Under the hood, a rewrite of the Cypher statement generator has led to substantial performance improvements, with one to two orders of magnitude gains in performance and memory usage. Additionally, complex Cypher queries can now be mapped into DTO classes with more complete result mappings, allowing users to extract exactly the information they need without loading large parts of the graph database into application memory. The release also includes improved driver configuration options, including an `ogm.properties` file for configuring the HTTP driver and a new Spring bean configuration option. The team from GraphAware has been instrumental in helping with the development and testing of this release.
Feb 23, 2016
523 words in the original blog post.
Graph databases are designed to handle and store data relationships as first-class entities, providing a more intuitive model for complex connected-data applications. They offer advantages such as minutes-to-milliseconds performance, drastically accelerated development cycles, extreme business responsiveness, enterprise-readiness, ACID transactionality, high availability, horizontal read scalability, and storage of billions of entities. Graph databases can reduce impedance mismatch between technical and business domains, align with agile development practices, and provide robust and scalable solutions for mission-critical applications. They are commonly used in social applications, but their use cases extend to various enterprise organizations, including fraud detection, recommendation systems, and network analysis.
Feb 20, 2016
1,098 words in the original blog post.
The 5-Minute Interview: Mark Joslin, CTO of Maslow`
Mark Joslin, the CTO of Maslow, discusses their Neo4j project, a card-based social network. The company chose Neo4j for its graph database capabilities, particularly in handling relationships and pattern matching, which is essential for machine learning and recommending content to users. Joslin highlights that Neo4j's ability to make relationships first-class citizens has been a game-changer, making it easier to understand and implement complex queries. He also praises Neo4j's power as a pattern match, allowing for both filtering and criteria application. In retrospect, Joslin wishes he had started using Neo4j earlier and would have built the app again with more experience in Cypher queries. The conversation concludes with an invitation to learn more about Neo4j and graphs compared to RDBMS through an ebook and a NYC Meetup.
Feb 19, 2016
739 words in the original blog post.
The Neo4j community has published numerous articles, podcasts, videos, slides, presentations, libraries, code repositories, and other projects in January. These resources cover a wide range of topics, including graph databases, data modeling, Cypher queries, web development, and more. The community is actively sharing knowledge and experiences, with many projects and tutorials available for learning Neo4j. To stay up-to-date with the latest developments and get started with Neo4j, users can register for a free online course or explore various resources on the official Neo4j website.
Feb 17, 2016
794 words in the original blog post.
The article explores the concept of programming as a process akin to building parse tree graphs, emphasizing how developers, often perceived as text code writers, are inherently engaged in constructing these complex structures, which are partially abstracted by compilers. It discusses how programming can be visualized through the lens of Alan Turing's thought processes, where the creation and manipulation of tree graphs represent the underlying logic and structure of code development. The article highlights the importance of understanding parse trees in programming and suggests that programmers unconsciously build these mental models to solve coding problems, with tools like Neo4j and Antlr4 aiding in visualizing and automating this process. The narrative delves into the potential application of microservices and Cypher queries to automate and optimize the creation of these graphs, drawing parallels to Turing's theoretical frameworks. The author also acknowledges the various tools and resources used to facilitate this exploration and invites readers to further engage with Neo4j to develop their graph database skills.
Feb 16, 2016
2,295 words in the original blog post.
Relational databases have been a cornerstone of software applications since the 80s, offering robust data structures and organization capabilities. However, with today's increasingly complex and connected data requirements, relational databases struggle to capture rich relationship information and adapt to frequent changes, leading to performance issues and high maintenance costs. In contrast, graph databases are designed to store and organize connected data, providing a more agile and efficient solution for applications that require insights into relationships between data elements. By exploring the limitations of relational databases in handling connected data, this blog series aims to introduce developers with RDBMS experience to the benefits of graph databases and provide guidance on when and how to use them effectively.
Feb 15, 2016
1,148 words in the original blog post.
Neo4j is being used by Bert, a developer, as part of his projects in the Netherlands and New York. He worked on a geocoder search engine for historical place names with Neo4j as one of the backends, creating a graph of place names and historical place names to tackle the issue of changing names over time. The project, called Histograph, aimed to create a common ground for talking about identifiers of those names. Bert also mentioned that he chose Neo4j because of its active community, clear plans for development, and great libraries with good documentation and support from Stack Overflow. He noted that some features, such as indexing edges, are currently not possible in Neo4j but are expected to be added in future editions. Bert is now working on the Space/Time Directory project at the New York Public Library, aiming to create a digital time machine to travel through the library's collection and connect users with rich materials using APIs and graph databases.
Feb 12, 2016
1,138 words in the original blog post.
Several concerns arise when considering the future of a database, including the potential increase in data volume and the need to adapt to changing business demands. A NoSQL solution, specifically graph databases, is considered due to their flexibility and performance capabilities. However, modeling data as a graph presents challenges, particularly for those accustomed to relational data modeling styles. Graph databases were designed to mimic natural data modeling methods, such as mapping complex data structures on a whiteboard. To effectively model data in this way, it's essential to learn agile coding techniques that can accommodate evolving business and user needs. Fortunately, expert guidance is available through webinars and resources, offering tips and tricks for more effective data modeling, including modeling data incrementally, designing strong queries using Cypher, building a recommendation engine, profiling queries, and determining the need for multiple models.
Feb 11, 2016
554 words in the original blog post.
The text discusses various aspects of query planning and optimization in Neo4j, a graph database management system. It explains how Cypher, the query language used in Neo4j, executes queries and how the cost-based planner determines the optimal execution plan. The article also covers topics such as using indexes and constraints, splitting MATCH clauses to reduce cardinality, forcing indexes, and providing additional query hints like parameters and avoiding Cartesian products. These tips aim to help users optimize their Cypher queries for better performance.
Feb 10, 2016
2,241 words in the original blog post.
The article provides an overview of how Cypher, a query language used in Neo4j graph databases, executes queries. It explains how the cost-based planner assigns costs to execution plans and selects the cheapest one, and how users can interact with query plans to make changes for better performance. The article also covers various optimization techniques such as using node labels, indexes, and constraints, splitting `MATCH` clauses, using size with relationships, forcing indexes, and avoiding Cartesian products. Additionally, it highlights the importance of keeping queries short and separating read and write queries. By applying these tips, users can improve the performance of their Cypher queries.
Feb 10, 2016
2,253 words in the original blog post.
Date Night is an app that uses the Entertainment Graph, a platform built on Neo4j, a native graph database, to provide personalized movie recommendations for couples. The app takes two movie suggestions from users and uses data relationships in The Entertainment Graph to suggest a list of movies both users will enjoy. The platform behind the magic is The Entertainment Graph, which connects music, books, games, movies, and TV through contributors, genres, and traits that give content meaning and context. Neo4j's graph database stores data as nodes connected by relationships, allowing for powerful analysis and recommendation engines. The first Date Night recommendation engine was developed using Cypher, a native graph query language, and has served over one million recommendation sets so far, with plans to demo the app at Digital Entertainment World.
Feb 09, 2016
1,028 words in the original blog post.
The goal of polyglot persistence is to leverage the strengths of multiple database technologies to enhance an application, but it comes with added complexity. To simplify this process, a prototype Neo4j-Cassandra data import tool has been developed to convert from one data model to another. This tool enables the transfer of data from Cassandra's column-oriented data model into Neo4j's property graph model, allowing developers to take advantage of both databases' strengths. The tool provides limited options for translation and maps every table to a node in the graph model, but it is an alpha prototype that demonstrates some issues and approaches, with community feedback and contributions appreciated. Cassandra's strengths include handling high write throughput and storing high-volume data such as event logs, while Neo4j excels at handling relationships, making them suitable for use cases like fraud detection.
Feb 08, 2016
686 words in the original blog post.
The 5-Minute Interview with Brad Brech, CTO of Solutions at IBM, discusses the collaboration between IBM and Neo Technology on leveraging Power technology for scalable graph databases. POWER8's unique architecture, open design, and performance capabilities make it an ideal platform for Neo4j. The partnership enables Neo4j to scale and perform better in big data analytics, decision-making, and other applications, addressing scalability issues with traditional NoSQL databases. Brad Brech highlights the potential of this collaboration, particularly in industries like retail, finance, and IoT, where graph databases can help make better decisions by analyzing complex connections between data points.
Feb 05, 2016
1,324 words in the original blog post.
Our co-founder was inspired to build Traverse Mobile while on a backpacking trip to Thailand in 2011, where he met friends and gained travel tips that planted the seed for the app. Two years later, he realized the need for a simple mobile-friendly way to save and share travel experiences with trusted ratings and reviews. The team validated their idea at a Startup Weekend event in New York City, gaining valuable advice and interacting with potential clients. They then began building Traverse using Swift for iOS and AWS as their infrastructure provider. Research led them to discover graph databases and Neo4j Community Edition, which became their backend database due to its ability to connect the dots and build recommendation engines. The team found an incredible framework from Cory Wiles that helped them interact with Neo4j and create users. Development is progressing, with over 25,000 lines of code, and the beta app is available in the iOS app store under the name Traverse Technologies. Neo4j has proved great for speed, mathematical computation, pattern recognition, and the team is happy with their results. The journey was made possible by the dedication and support of users and the Neo4j team.
Feb 04, 2016
1,351 words in the original blog post.
Cypher is Neo4j's graph query language that uses ASCII art to draw out desired graph patterns in code. It allows users to specify relationships between nodes and data, such as "node-relationship-node" patterns, with the use of hyphens and direction indicators like "greater than" signs. Cypher enables querying complex hierarchical structures like tree-like structures, and is particularly useful for modeling real-world relationships between entities. The language supports various query types, including finding units that can be built at a building, calculating average unit cost, determining unlocked buildings and units with additional requirements, and traversing multiple levels of relationships to find dependencies. By utilizing Cypher's functions such as "shortestPath" and "UNWIND", users can efficiently analyze and visualize their data in Neo4j.
Feb 03, 2016
1,591 words in the original blog post.
Security is a fundamental aspect of modern software development, and Neo4j, as a graph database, requires robust security measures to protect its data. While filesystem encryption can enhance protection, it alone is insufficient due to the REST-based architecture of Neo4j, which responds to Cypher statements in cleartext over the network. Application-layer encryption offers an additional layer of protection by dynamically encrypting and decrypting data at runtime, addressing industry security standards such as HIPPA and FERPA. The Object Graph Mapping (OGM) library provides a straightforward approach to implement application-level security through the use of AttributeConverters, allowing developers to selectively encrypt properties while retaining flexibility for other properties that may not require encryption. However, this approach also incurs computational overhead and may impact system performance, and existing data will need to be transformed into the desired encrypted format. Ultimately, employing the right amount of security is crucial in software development, and Neo4j's OGM library provides a viable solution for securing data on disk and during transmission.
Feb 02, 2016
1,047 words in the original blog post.
Using Neo4j for code analysis, Neolytics is a Ruby gem that records the execution of a block of Ruby code in a Neo4j database. It tracks each step of the execution, objects found along the way, and abstract syntax trees of all Ruby code files involved in the execution. The data can be queried to examine the results, such as examining the execution of a method or running code metrics like cyclomatic complexity. A Rails application is also built on top of Neolytics to provide a user interface for analyzing the data. The tool provides various options for querying and visualizing the data, allowing developers to debug and analyze their code more effectively.
Feb 01, 2016
862 words in the original blog post.