{"id":1199,"date":"2017-02-01T15:02:35","date_gmt":"2017-02-01T15:02:35","guid":{"rendered":"http:\/\/blog.stratio.com\/?p=1199"},"modified":"2023-09-20T13:51:20","modified_gmt":"2023-09-20T13:51:20","slug":"graph-database-clustering-solution","status":"publish","type":"post","link":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/","title":{"rendered":"Profiling and segmentation: A graph database clustering solution"},"content":{"rendered":"<p style=\"text-align: left;\">This post is about an exciting journey that starts with a problem and ends with a solution. One of the top banks in Europe came to us with a request: they needed a better profiling system.<\/p>\n<p><!--more--><\/p>\n<p style=\"text-align: left;\">We came up with a methodology for clustering nodes in a graph database according to concrete parameters.<\/p>\n<p style=\"text-align: left;\">We started by developing a Proof of Concept (POC) to test an approximation of the bank\u2019s profiling data, using the following technologies:<\/p>\n<ul style=\"text-align: left;\">\n<li>Java \/ Scala, as Programming languages.<\/li>\n<li>Apache Spark, to handle the given Data Sets.<\/li>\n<li>Neo4j, as graph database.<\/li>\n<\/ul>\n<p style=\"text-align: left;\">The POC began as a 2-month long project in which we rapidly discovered a powerful solution to the bank\u2019s needs.<\/p>\n<p style=\"text-align: left;\">We decided to use Neo4j, along with Cypher, Neo4j\u2019s query language, because relationships are a core aspect of their data model. Their graph databases can manage highly connected data and complex queries. We were then able to make node clusters thanks to GraphX, an Apache Spark API for running graph and graph-parallel compute operations on data.<\/p>\n<p style=\"text-align: left;\">Along the way, we decided to challenge another of the more well-known issues faced by banks: Detecting data redundancy in a massive database. Our client needed a function that could help them detect nodes that\u00a0already had\u00a0the same set of nodes (or a way to get an equality measure between them) and the possibility to create\u00a0more complex queries to test their database through this information. For example, taking all the departments in a company and detecting which of them has exactly the same related users.<\/p>\n<figure id=\"attachment_1233\" aria-describedby=\"caption-attachment-1233\" style=\"width: 1103px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/02\/graphCases-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1233 size-full\" src=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/02\/graphCases-1.png\" alt=\"Image 1 - Departments (green nodes) and their related users (the blue ones)\" width=\"1103\" height=\"596\" srcset=\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/graphCases-1.png 1103w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/graphCases-1-300x162.png 300w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/graphCases-1-768x415.png 768w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/graphCases-1-1024x553.png 1024w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/graphCases-1-1080x584.png 1080w\" sizes=\"(max-width: 1103px) 100vw, 1103px\" \/><\/a><figcaption id=\"caption-attachment-1233\" class=\"wp-caption-text\"><strong>Image 1 &#8211; Departments (green nodes) and their related users (the blue ones)<\/strong><\/figcaption><\/figure>\n<p style=\"text-align: left;\">The above image shows all the possible situations that we can face in a graph database. Departments with exactly the same shared users, department that share part of their users and finally departments which manage totally different groups of user. How can we measure the difference between sets of users to detect redundant departments?<\/p>\n<p style=\"text-align: left;\">With this in mind, we can move on to our fancy solution!<\/p>\n<h2 style=\"text-align: left;\">Solution<\/h2>\n<p style=\"text-align: left;\">The first step was the research of a math solution to get a type of measure which could help us with the set differentiation. After a couple of hours, we came across our \u00a0our new best friend Paul Jaccard, who created a Similarity coefficient with the following formula.<\/p>\n<figure id=\"attachment_1203\" aria-describedby=\"caption-attachment-1203\" style=\"width: 386px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-2-\u2013-Jaccard-Index-formula.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1203\" src=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-2-\u2013-Jaccard-Index-formula.png\" alt=\"Image 2 \u2013 Jaccard Index formula\" width=\"386\" height=\"57\" srcset=\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-2-\u2013-Jaccard-Index-formula.png 386w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-2-\u2013-Jaccard-Index-formula-300x44.png 300w\" sizes=\"(max-width: 386px) 100vw, 386px\" \/><\/a><figcaption id=\"caption-attachment-1203\" class=\"wp-caption-text\"><strong>Image 2 \u2013 Jaccard Index formula<\/strong><\/figcaption><\/figure>\n<p style=\"text-align: left;\">This method allowed us to detect departments with exactly the same users \u2192 J(A,B) = 0 or with totally different sets \u2192 J(A,B) = 1. Using this method, we developed a solution with Spark to compare all nodes.<\/p>\n<figure id=\"attachment_1204\" aria-describedby=\"caption-attachment-1204\" style=\"width: 839px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-3-\u2013-Jaccard-Spark-solution.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1204\" src=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-3-\u2013-Jaccard-Spark-solution.png\" alt=\"Image 3 \u2013 Jaccard Spark solution\" width=\"839\" height=\"366\" srcset=\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-3-\u2013-Jaccard-Spark-solution.png 1411w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-3-\u2013-Jaccard-Spark-solution-300x131.png 300w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-3-\u2013-Jaccard-Spark-solution-768x335.png 768w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-3-\u2013-Jaccard-Spark-solution-1024x447.png 1024w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-3-\u2013-Jaccard-Spark-solution-1080x471.png 1080w\" sizes=\"(max-width: 839px) 100vw, 839px\" \/><\/a><figcaption id=\"caption-attachment-1204\" class=\"wp-caption-text\"><strong>Image 3 \u2013 Jaccard Spark solution<\/strong><\/figcaption><\/figure>\n<p style=\"text-align: left;\">As you can see in the above image, at the end of the process we obtain a RDD with the Jaccard Index between every department. This content is then uploaded \u00a0to Neo4j through a batch process. During the ingestion, we create a relationship between every department node. Each of these relationships is based on the famous Jaccard index.<\/p>\n<figure id=\"attachment_1218\" aria-describedby=\"caption-attachment-1218\" style=\"width: 464px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-4-\u2013-Neo4j-node-cluster-with-Jaccard-Index-relationship-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1218 size-full\" src=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-4-\u2013-Neo4j-node-cluster-with-Jaccard-Index-relationship-1.png\" alt=\"Image 4 \u2013 Neo4j node cluster with Jaccard Index relationship\" width=\"464\" height=\"353\" srcset=\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-4-\u2013-Neo4j-node-cluster-with-Jaccard-Index-relationship-1.png 464w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-4-\u2013-Neo4j-node-cluster-with-Jaccard-Index-relationship-1-300x228.png 300w\" sizes=\"(max-width: 464px) 100vw, 464px\" \/><\/a><figcaption id=\"caption-attachment-1218\" class=\"wp-caption-text\"><strong>Image 4 \u2013 Neo4j node cluster with Jaccard Index relationship<\/strong><\/figcaption><\/figure>\n<p style=\"text-align: left;\">Here we can see a cluster of department nodes, with their relationship \u201cjaccard_relationship\u201d. As we already know, the relationship keeps the Jaccard value.<\/p>\n<figure id=\"attachment_1219\" aria-describedby=\"caption-attachment-1219\" style=\"width: 995px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-5-\u2013-Cypher-query-using-Jaccard-Index-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1219 size-full\" src=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-5-\u2013-Cypher-query-using-Jaccard-Index-1.png\" alt=\"Image 5 \u2013 Cypher query using Jaccard Index\" width=\"995\" height=\"477\" srcset=\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-5-\u2013-Cypher-query-using-Jaccard-Index-1.png 995w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-5-\u2013-Cypher-query-using-Jaccard-Index-1-300x144.png 300w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-5-\u2013-Cypher-query-using-Jaccard-Index-1-768x368.png 768w\" sizes=\"(max-width: 995px) 100vw, 995px\" \/><\/a><figcaption id=\"caption-attachment-1219\" class=\"wp-caption-text\"><strong>Image 5 \u2013 Cypher query using Jaccard Index<\/strong><\/figcaption><\/figure>\n<p style=\"text-align: left;\">In the above example, we have set a query to show a table of related departments that don\u2019t have exactly the same set of users. The closer to 1, the more different the sets.<\/p>\n<p style=\"text-align: left;\">This is how we solved the first problem of relating every department and finding a way to check them efficiently through Cypher queries.<\/p>\n<p style=\"text-align: left;\">The other problem was node clustering through the Jaccard Index. This is where GraphX came into the picture. Inside this API, we can find the method &#8220;Connected Components&#8221;\u00a0which does exactly what we needed: relate a set of nodes through concrete parameters, for this use case it will be the jaccard iindex.<\/p>\n<p style=\"text-align: left;\">Take a look at the Jaccard + GraphX solution applied to our Neo4J database:<\/p>\n<figure id=\"attachment_1235\" aria-describedby=\"caption-attachment-1235\" style=\"width: 998px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/02\/img2-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1235 size-full\" src=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/02\/img2-1.jpg\" alt=\"Image 6 \u2013 Cluster nodes inside a database\" width=\"998\" height=\"707\" srcset=\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/img2-1.jpg 998w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/img2-1-300x213.jpg 300w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/img2-1-768x544.jpg 768w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/img2-1-400x284.jpg 400w\" sizes=\"(max-width: 998px) 100vw, 998px\" \/><\/a><figcaption id=\"caption-attachment-1235\" class=\"wp-caption-text\"><strong>Image 6 \u2013 Cluster nodes inside a database<\/strong><\/figcaption><\/figure>\n<p style=\"text-align: left;\">Every cluster of nodes is given an identifier (which is the code of the smaller node in the set) to enable us to work with it easily.<\/p>\n<figure id=\"attachment_1208\" aria-describedby=\"caption-attachment-1208\" style=\"width: 931px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-7-\u2013-Cluster-list-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1208\" src=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-7-\u2013-Cluster-list-1.png\" alt=\"Image 7 \u2013 Cluster list\" width=\"931\" height=\"504\" \/><\/a><figcaption id=\"caption-attachment-1208\" class=\"wp-caption-text\"><strong>Image 7 \u2013 Cluster list<\/strong><\/figcaption><\/figure>\n<p style=\"text-align: left;\">In the above query, we can see a relation of Jaccard clusters and the number of nodes inside each one. Now, let&#8217;s check the content of one of the smaller clusters&#8230;<\/p>\n<figure id=\"attachment_1209\" aria-describedby=\"caption-attachment-1209\" style=\"width: 892px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-8-\u2013-Departments-of-Cluster-11881-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1209\" src=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-8-\u2013-Departments-of-Cluster-11881-1.png\" alt=\"Image 8 - Cluster 11881 Departments\" width=\"892\" height=\"238\" \/><\/a><figcaption id=\"caption-attachment-1209\" class=\"wp-caption-text\"><strong>Image 8 &#8211; Cluster 11881 Departments<\/strong><\/figcaption><\/figure>\n<p style=\"text-align: left;\">With a simple query, we are able to know all the departments inside the cluster. Now let&#8217;s check if all the departments share the same set of users:<\/p>\n<figure id=\"attachment_1210\" aria-describedby=\"caption-attachment-1210\" style=\"width: 1035px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-9-\u2013-Advertising-Department-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1210\" src=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-9-\u2013-Advertising-Department-1.png\" alt=\"Image 9 \u2013 Advertising Department\" width=\"1035\" height=\"227\" \/><\/a><figcaption id=\"caption-attachment-1210\" class=\"wp-caption-text\"><strong>Image 9 \u2013 Advertising Department<\/strong><\/figcaption><\/figure>\n<figure id=\"attachment_1211\" aria-describedby=\"caption-attachment-1211\" style=\"width: 1056px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-10-\u2013-PR-Department.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1211\" src=\"http:\/\/blog.stratio.com\/wp-content\/uploads\/2017\/01\/Image-10-\u2013-PR-Department.png\" alt=\"Image 10 \u2013 PR Department\" width=\"1056\" height=\"239\" srcset=\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-10-\u2013-PR-Department.png 1056w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-10-\u2013-PR-Department-300x68.png 300w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-10-\u2013-PR-Department-768x174.png 768w, https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/01\/Image-10-\u2013-PR-Department-1024x232.png 1024w\" sizes=\"(max-width: 1056px) 100vw, 1056px\" \/><\/a><figcaption id=\"caption-attachment-1211\" class=\"wp-caption-text\"><strong>Image 10 \u2013 PR Department<\/strong><\/figcaption><\/figure>\n<p style=\"text-align: left;\">As we can see, the departments both share exactly the same users.<\/p>\n<h2 style=\"text-align: left;\">Main benefits of a graph database clustering solution<\/h2>\n<p style=\"text-align: left;\">We have developed a generic solution that\u00a0can be applied to any node inside a graph database. This enables us to create different clusters joined by the characteristics of our choice. It is a powerful way to make online queries to a graph database, which is integrated with Spark and GraphX.<\/p>\n<p style=\"text-align: left;\">In a short period of time, we are able to create different samples of the same graph with different identities or logic.<\/p>\n<p style=\"text-align: left;\">For example, if we applied the method to a film recommendation system, we could get different clusters divided by users who love the same films, film genres in a concrete period of time or the most profitable films depending on the viewer age. Just think of the possibilities and benefits of this solution when applied to even more complex projects!<\/p>\n<p style=\"text-align: left;\">To sum up, we have added a new layer to our client\u2019s existing profiling system.<\/p>\n<h2 style=\"text-align: left;\">Next steps in profiling and segmentation<\/h2>\n<p style=\"text-align: left;\">This solution may help solve even more complex profiling issues and can be further improved:<\/p>\n<ul style=\"text-align: left;\">\n<li>By applying it to other projects with profiling or segmentation requirements.<\/li>\n<li>By comparing it to other segmentation algorithms like K-means or KKN.<\/li>\n<li>By applying new GraphX functionalities to our solution.<\/li>\n<\/ul>\n<h2 style=\"text-align: left;\">POC Conclusions<\/h2>\n<p style=\"text-align: left;\">This has been a great experience! Thanks to all the incredible technologies and the fact that it is really easy to check results through Neo4J, we have been able to create a powerful solution for our client with the possibility of easily adding more useful functionalities to it.<\/p>\n<p style=\"text-align: left;\">The best part of this journey was seeing our client\u2019s reaction to the result. They were both amazed and terrified by the huge amount of redundant data in their system.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post is about an exciting journey that starts with a problem and ends with a solution. One of the top banks in Europe came to us with a request: they needed a better profiling system.<\/p>\n","protected":false},"author":2,"featured_media":1236,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[686],"tags":[19],"ppma_author":[794],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.9 (Yoast SEO v22.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Profiling and segmentation: A graph database clustering solution - Stratio Blog<\/title>\n<meta name=\"description\" content=\"Stratio has developed a methodology for clustering nodes in a graph database according to concrete parameters - Real use case for one of top banks in Europe\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Profiling and segmentation: A graph database clustering solution\" \/>\n<meta property=\"og:description\" content=\"Stratio has developed a methodology for clustering nodes in a graph database according to concrete parameters - Real use case for one of top banks in Europe\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/\" \/>\n<meta property=\"og:site_name\" content=\"Stratio\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-01T15:02:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-20T13:51:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/Garph_ok.png\" \/>\n\t<meta property=\"og:image:width\" content=\"730\" \/>\n\t<meta property=\"og:image:height\" content=\"312\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@stratiobd\" \/>\n<meta name=\"twitter:site\" content=\"@stratiobd\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/af4f5fbbeb95bd7d55f79d9a677e615d\"},\"headline\":\"Profiling and segmentation: A graph database clustering solution\",\"datePublished\":\"2017-02-01T15:02:35+00:00\",\"dateModified\":\"2023-09-20T13:51:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/\"},\"wordCount\":1140,\"publisher\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/Garph_ok.png\",\"keywords\":[\"Big Data\"],\"articleSection\":[\"Product\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/\",\"url\":\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/\",\"name\":\"Profiling and segmentation: A graph database clustering solution - Stratio Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/Garph_ok.png\",\"datePublished\":\"2017-02-01T15:02:35+00:00\",\"dateModified\":\"2023-09-20T13:51:20+00:00\",\"description\":\"Stratio has developed a methodology for clustering nodes in a graph database according to concrete parameters - Real use case for one of top banks in Europe\",\"breadcrumb\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#primaryimage\",\"url\":\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/Garph_ok.png\",\"contentUrl\":\"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/Garph_ok.png\",\"width\":730,\"height\":312,\"caption\":\"Graph database clustering\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.stratio.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Profiling and segmentation: A graph database clustering solution\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#website\",\"url\":\"https:\/\/www.stratio.com\/blog\/\",\"name\":\"Stratio Blog\",\"description\":\"Corporate blog\",\"publisher\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.stratio.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#organization\",\"name\":\"Stratio\",\"url\":\"https:\/\/www.stratio.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/stratio.com\/blog\/wp-content\/uploads\/2020\/06\/stratio-web-logo-1.png\",\"contentUrl\":\"https:\/\/stratio.com\/blog\/wp-content\/uploads\/2020\/06\/stratio-web-logo-1.png\",\"width\":260,\"height\":55,\"caption\":\"Stratio\"},\"image\":{\"@id\":\"https:\/\/www.stratio.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/stratiobd\",\"https:\/\/es.linkedin.com\/company\/stratiobd\",\"https:\/\/www.youtube.com\/c\/StratioBD\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/af4f5fbbeb95bd7d55f79d9a677e615d\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/image\/589aaf4b404b1fe099b09564062c4563\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9b181ae4395243dccaf1c3e3a4749d81?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9b181ae4395243dccaf1c3e3a4749d81?s=96&d=mm&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Profiling and segmentation: A graph database clustering solution - Stratio Blog","description":"Stratio has developed a methodology for clustering nodes in a graph database according to concrete parameters - Real use case for one of top banks in Europe","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/","og_locale":"en_US","og_type":"article","og_title":"Profiling and segmentation: A graph database clustering solution","og_description":"Stratio has developed a methodology for clustering nodes in a graph database according to concrete parameters - Real use case for one of top banks in Europe","og_url":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/","og_site_name":"Stratio","article_published_time":"2017-02-01T15:02:35+00:00","article_modified_time":"2023-09-20T13:51:20+00:00","og_image":[{"width":730,"height":312,"url":"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/Garph_ok.png","type":"image\/png"}],"author":"admin","twitter_card":"summary_large_image","twitter_creator":"@stratiobd","twitter_site":"@stratiobd","twitter_misc":{"Written by":"admin","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#article","isPartOf":{"@id":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/"},"author":{"name":"admin","@id":"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/af4f5fbbeb95bd7d55f79d9a677e615d"},"headline":"Profiling and segmentation: A graph database clustering solution","datePublished":"2017-02-01T15:02:35+00:00","dateModified":"2023-09-20T13:51:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/"},"wordCount":1140,"publisher":{"@id":"https:\/\/www.stratio.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#primaryimage"},"thumbnailUrl":"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/Garph_ok.png","keywords":["Big Data"],"articleSection":["Product"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/","url":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/","name":"Profiling and segmentation: A graph database clustering solution - Stratio Blog","isPartOf":{"@id":"https:\/\/www.stratio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#primaryimage"},"image":{"@id":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#primaryimage"},"thumbnailUrl":"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/Garph_ok.png","datePublished":"2017-02-01T15:02:35+00:00","dateModified":"2023-09-20T13:51:20+00:00","description":"Stratio has developed a methodology for clustering nodes in a graph database according to concrete parameters - Real use case for one of top banks in Europe","breadcrumb":{"@id":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#primaryimage","url":"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/Garph_ok.png","contentUrl":"https:\/\/www.stratio.com\/blog\/wp-content\/uploads\/2017\/02\/Garph_ok.png","width":730,"height":312,"caption":"Graph database clustering"},{"@type":"BreadcrumbList","@id":"https:\/\/www.stratio.com\/blog\/graph-database-clustering-solution\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.stratio.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Profiling and segmentation: A graph database clustering solution"}]},{"@type":"WebSite","@id":"https:\/\/www.stratio.com\/blog\/#website","url":"https:\/\/www.stratio.com\/blog\/","name":"Stratio Blog","description":"Corporate blog","publisher":{"@id":"https:\/\/www.stratio.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.stratio.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.stratio.com\/blog\/#organization","name":"Stratio","url":"https:\/\/www.stratio.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.stratio.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/stratio.com\/blog\/wp-content\/uploads\/2020\/06\/stratio-web-logo-1.png","contentUrl":"https:\/\/stratio.com\/blog\/wp-content\/uploads\/2020\/06\/stratio-web-logo-1.png","width":260,"height":55,"caption":"Stratio"},"image":{"@id":"https:\/\/www.stratio.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/stratiobd","https:\/\/es.linkedin.com\/company\/stratiobd","https:\/\/www.youtube.com\/c\/StratioBD"]},{"@type":"Person","@id":"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/af4f5fbbeb95bd7d55f79d9a677e615d","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.stratio.com\/blog\/#\/schema\/person\/image\/589aaf4b404b1fe099b09564062c4563","url":"https:\/\/secure.gravatar.com\/avatar\/9b181ae4395243dccaf1c3e3a4749d81?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9b181ae4395243dccaf1c3e3a4749d81?s=96&d=mm&r=g","caption":"admin"}}]}},"authors":[{"term_id":794,"user_id":2,"is_guest":0,"slug":"admin","display_name":"admin","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/9b181ae4395243dccaf1c3e3a4749d81?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/posts\/1199"}],"collection":[{"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/comments?post=1199"}],"version-history":[{"count":9,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/posts\/1199\/revisions"}],"predecessor-version":[{"id":13960,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/posts\/1199\/revisions\/13960"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/media\/1236"}],"wp:attachment":[{"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/media?parent=1199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/categories?post=1199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/tags?post=1199"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.stratio.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}