도대체 그래프 데이터베이스가 무엇입니까?
이에 대해 자세히 살펴보고 이 새로운 접근 방식을 고려해야 하는 이유를 살펴보겠습니다.
그래프에 대해 이야기할 때 우리는 많은 관계(예: 소셜 네트워크 연결 및 추천 엔진)를 가진 매우 조밀하게 연결된 데이터에 대해 이야기하고 있습니다. 그래프 데이터베이스는 단순히 기술 인터뷰 중에 거의 항상 질문되는 악명 높은 그래프 데이터 구조의 한 형태입니다.
그래프 데이터베이스는 테이블과 문서 대신 "노드"와 "관계"를 저장합니다.
화이트보드에 아이디어를 스케치하고 함께 결합하여 일종의 마인드 맵을 형성한다고 상상해 보십시오. 사용 방법에 대해 유연하게 생각할 수 있습니다. 그래프 데이터베이스는 동일한 영향을 미칩니다. 데이터는 마인드 맵의 모양과 유사하게 저장됩니다. 따라야 할 엄격한 사전 정의 모델이 없지만 조밀하게 연결된 관계.
왜 그래프 데이터베이스인가?
그래프 데이터베이스를 사용해야 하는 이유는 무엇입니까? 결국 우리가 구축하는 거의 모든 애플리케이션은 SQL 또는 NoSQL 데이터베이스를 사용합니다.
가장 중요한 이유는 특히 데이터가 조밀하게 연결되어 있을 때 데이터의 추론을 훨씬 더 이해하기 쉽게 만든다는 것입니다.
단순히 그래프 데이터베이스를 사용하는 이유를 보여주는 이미지를 표시하는 것만으로는 충분하지 않으므로 실제 코드를 사용하여 간단한 사용 사례를 비교해 보겠습니다.
이 SQL 시나리오를 상상해 보십시오.
Our goal is to find the name of companies that purchased the product “Mac”.
해결책은 다음과 같습니다.
SELECT distinct c.CompanyName
FROM customers AS C
JOIN orders AS o ON (c.CustomerID = o.CustomerID)
JOIN orderdetails AS od ON (o.OrderID = od.OrderID)
JOIN products as p ON (od.ProductID = p.ProductID)
WHERE p.ProductName = ‘Mac’
분명히 매우 간단하지만 정확히 동일한 시나리오를 그래프 데이터베이스에 넣으면 상황이 더 이해하기 시작합니다.
그래프 데이터베이스 설계에서 정확히 동일한 시나리오:
이 경우 적절한 모델을 구축하는 데 필요한 사고 과정이 없기 때문에 디자인을 읽고 이해하기가 더 쉽습니다.
Gremlin을 사용하는 솔루션은 다음과 같습니다.
g.V().hasLabel(‘Product’).has(‘productName’, ‘Mac’)
.in(‘HAS_PRODUCT’)
.in(‘HAS_DETAILS’)
.in(‘PURCHASED’)
.values(‘CompanyName’).dedup()
이 경우 조인에 대해 걱정할 필요 없이 그래프를 순회하기만 하면 되므로 쿼리가 훨씬 간단합니다.
인기 있는 그래프 데이터베이스
현재 업계에는 몇 가지 인기 있는 그래프 데이터베이스 옵션이 있으며 그 중 일부는 다음과 같습니다.
Neo4j — 기본 그래프 저장 및 처리 기능을 갖춘 ACID 호환 트랜잭션 데이터베이스.
ArangoDB —확장 가능하고 완전히 관리되는 그래프 데이터베이스, 문서 저장소 및 검색 엔진이 한 곳에 있습니다.
Amazon Neptune — 빠르고 안정적이며 완전히 관리되는 그래프 데이터베이스 서비스
대체로 많은 수의 관계가 있는 고도로 연결된 데이터가 필요한 경우 그래프 데이터베이스는 훌륭한 솔루션이 될 수 있습니다. 이 주제 자체는 그래프 데이터 구조의 작동 방식에 대한 지식이 필요하기 때문에 어려울 수 있습니다.
계속 성장하세요! 😁
Reference
이 문제에 관하여(도대체 그래프 데이터베이스가 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ammarraneez/what-on-earth-are-graph-databases-3364텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)