도대체 그래프 데이터베이스가 무엇입니까?

SQL 및 NoSQL 데이터베이스(결국 가장 많이 사용되는 데이터베이스임)에 대해 들어봤을 수 있지만 그래프 데이터베이스에 대해 들어본 적이 있습니까? 🤔

이에 대해 자세히 살펴보고 이 새로운 접근 방식을 고려해야 하는 이유를 살펴보겠습니다.


그래프에 대해 이야기할 때 우리는 많은 관계(예: 소셜 네트워크 연결 및 추천 엔진)를 가진 매우 조밀하게 연결된 데이터에 대해 이야기하고 있습니다. 그래프 데이터베이스는 단순히 기술 인터뷰 중에 거의 항상 질문되는 악명 높은 그래프 데이터 구조의 한 형태입니다.

그래프 데이터베이스는 테이블과 문서 대신 "노드"와 "관계"를 저장합니다.

화이트보드에 아이디어를 스케치하고 함께 결합하여 일종의 마인드 맵을 형성한다고 상상해 보십시오. 사용 방법에 대해 유연하게 생각할 수 있습니다. 그래프 데이터베이스는 동일한 영향을 미칩니다. 데이터는 마인드 맵의 모양과 유사하게 저장됩니다. 따라야 할 엄격한 사전 정의 모델이 없지만 조밀하게 연결된 관계.


왜 그래프 데이터베이스인가?



그래프 데이터베이스를 사용해야 하는 이유는 무엇입니까? 결국 우리가 구축하는 거의 모든 애플리케이션은 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 — 빠르고 안정적이며 완전히 관리되는 그래프 데이터베이스 서비스



  • 대체로 많은 수의 관계가 있는 고도로 연결된 데이터가 필요한 경우 그래프 데이터베이스는 훌륭한 솔루션이 될 수 있습니다. 이 주제 자체는 그래프 데이터 구조의 작동 방식에 대한 지식이 필요하기 때문에 어려울 수 있습니다.

    계속 성장하세요! 😁

    좋은 웹페이지 즐겨찾기