introduction of bitnine - business summary · use case : recommendation engine, fraud detection,...

Post on 30-May-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Introduction of Bitnine - Business Summary

Big Data Platform Technology Service through Graph Database

Open Source Database Solution and ServicesAgensGraph and AgensSQL

Intuitive Big Data Visualization Solution through Graph ModelingOptimized Visualization for IoT

Introduction of Bitnine - Summary

Bitnine Korea HQ Bitnine US R&D Center

1) Multi-Model Database Solution R&D (AGENS solutions)

2) Government project execution & Technology integration

3) Big Data Platform Technology Service through Graph Database

4) Open source database implementation

5) Intuitive Data Visualization Solution through Graph Modeling

Main Business

Area

Bitnine Employee number : 31 (as of Feb. 2017)

Bitnine US Marketing

Foundation: Oct. 2013

Introduction of Bitnine - Business Summary

▪ The first integrated database package and its extension modules in Korea based on PostgreSQL ▪ The core member and the Gold Sponsor of global PostgreSQL communities▪ Customers : Woori Investment Securities, LG CNS, Government Complex Data Center, Postech,

Dongjin Semichem, Samsung Display and etc.

▪ AgensGraph V 1.0 release in Jan. 2017.▪ AgensGraph is the first multi-model graph database management solution in Korea▪ Use Case : Recommendation Engine, Fraud Detection, Geo systems, Master Data Management,

Network and Data Center Management, Authorization and Access Control, Bio-Informatics

▪ Big Graph will be processed and executed based on Big Data platform and will be customized and developed through the integration of the graph database.

▪ Partnership : IBM, EMC, Cloudera, Neo4j▪ ISV : Cloudera, Hortonworks, Cyram, Linkurious, Cambridge Intelligence

●●●

○○○

●○

●●●

●○○○○○

●○

SELECT friend.id, count(comments)FROM (MATCH (:person {id: 1})-[:knows*1..2]->(friend) RETURN friend.id AS id) friend, -- Cypher subquery comment -- Relational tableWHERE friend.id = comment.creatorId AND comment.createdate > '2016.1.1';

MATCH (n:dev)WHERE n.year::int < (SELECT year FROM history WHERE event = 'AgensGraph')RETURN properties(n) AS n;

●○○

●○○

●○

●○○

●○

Start person

New post

tag

friend

friend2 Old post

Pattern 1

Pattern 2

Find pattern1 which does not have pattern2

●MATCH (person:Person {id:{1}})-[:KNOWS]-(:Person)<-[:HAS_CREATOR]-(post:Post)-[:HAS_TAG]->(tag:Tag)WHERE post.creationDate >= {2} AND post.creationDate < {3}OPTIONAL MATCH (tag)<-[:HAS_TAG]-(oldPost:Post)-[:HAS_CREATOR]->(:Person)-[:KNOWS]-(person)WHERE oldPost.creationDate < {2}WITH tag, post, length(collect(oldPost)) AS oldPostCountWHERE oldPostCount=0RETURN tag.name AS tagName, length(collect(post)) AS postCountORDER BY postCount DESC, tagName ASCLIMIT 20;

Pattern 1

Pattern 2Find pattern1 which does not have pattern2

● But this query takes too long because it searches Pattern2 for each occurrences of Pattern1● If # of Pattern1 is n and # of Pattern2 is m, then n X m traversals are needed!!

●SELECT tagname, count(distinct postid) AS postcount FROM ( SELECT NewPost.tag AS tagname, NewPost.postid AS postid, count(distinct OldPost.postid) AS oldPostCount FROM ( MATCH (person:Person {id:$1})-[:KNOWS]->()<-[:hasCreatorPost]-(post:Post)-[:hasTagPost]->(tag:Tag) WHERE post.creationDate >= $2 AND post.creationDate < $3 RETURN post.id AS postid, tag.name AS tag) NewPost LEFT JOIN ( MATCH (person:Person {id:$4})-[:KNOWS]->()<-[:hasCreatorPost]-(post:Post)-[:hasTagPost]->(tag:Tag) WHERE post.creationDate < $2 RETURN post.id AS postid, tag.name AS tag) OldPost ON NewPost.tag = OldPost.tag GROUP BY NewPost.tag, OldPost.postid) AWHERE oldPostCount = 0 GROUP BY tagname ORDER BY postcount DESC, tagname ASC LIMIT 20;

Pattern 1

Pattern 2

Find pattern1 which does not have pattern2

● This query find Pattern1 and Pattern2 respectively, and left join them● n + m traversals are needed not n X m traversals !!

●●●●

●●●

○○○

top related