그래프 데이터베이스
Graph database그래프 데이터베이스(GDB)는 데이터를 표현하고 저장하기 위해 노드, 에지 및 속성이 있는 시맨틱 쿼리에 그래프 구조를 사용하는 데이터베이스입니다.[1] 시스템의 핵심 개념은 그래프(또는 에지 또는 관계)입니다. 그래프는 스토어의 데이터 항목을 노드와 에지의 집합, 즉 노드 간의 관계를 나타내는 에지와 연관시킵니다. 이러한 관계를 통해 스토어의 데이터를 직접 연결할 수 있으며, 많은 경우 한 번의 작업으로 검색할 수 있습니다. 그래프 데이터베이스는 데이터 간의 관계를 우선 순위로 유지합니다. 관계를 조회하는 것은 관계가 데이터베이스에 영구적으로 저장되기 때문에 빠릅니다. 그래프 데이터베이스를 사용하여 관계를 직관적으로 시각화할 수 있으므로 상호 연결이 심한 데이터에 유용합니다.[2]
그래프 데이터베이스는 일반적으로 NoSQL이라고 합니다. 그래프 데이터베이스는 둘 다 일반 그래프를 나타낸다는 점에서 1970년대 네트워크 모델 데이터베이스와 유사하지만 네트워크 모델 데이터베이스는 낮은 수준의[3] 추상화로 작동하고 가장자리 체인에 대한 쉬운 순회가 부족합니다.[4]
그래프 데이터베이스의 기본 저장 메커니즘은 다양할 수 있습니다. 관계는 그래프 데이터베이스의 일급 시민이며 레이블을 지정하고 지시하고 속성을 지정할 수 있습니다. 일부는 관계형 엔진에 의존하여 그래프 데이터를 테이블에 "저장"합니다(테이블은 논리적 요소이므로 이 접근 방식은 그래프 데이터베이스, 그래프 데이터베이스 관리 시스템 및 데이터가 실제로 저장되는 물리적 장치 간에 또 다른 수준의 추상화를 부과합니다). 다른 사람들은 스토리지에 키-밸류 스토어 또는 문서 중심 데이터베이스를 사용하여 본질적으로 NoSQL 구조를 만듭니다.
2021년[update] 현재 관계형 데이터베이스의 경우 SQL과 동일한 방식으로 범용 그래프 쿼리 언어가 채택되지 않았으며, 매우 다양한 시스템이 존재하며, 대부분 하나의 제품에 밀접하게 연결되어 있습니다. 일부 초기 표준화 작업은 Gremlin, SPARQL 및 Cypher와 같은 여러 공급업체 쿼리 언어로 이어집니다. 2019년 9월, 새로운 표준 그래프 쿼리 언어(ISO/IEC 39075 Information Technology – Database Languages – GQL)를 만드는 프로젝트에 대한 제안이 ISO/IEC 공동 기술 위원회 1(ISO/IEC JTC 1) 회원들에 의해 승인되었습니다. GQL은 SQL과 같은 선언적 데이터베이스 쿼리 언어로 설계되었습니다. 쿼리 언어 인터페이스를 갖는 것 외에도 일부 그래프 데이터베이스는 API(Application Programming Interface)를 통해 액세스됩니다.
그래프 데이터베이스는 그래프 컴퓨팅 엔진과 다릅니다. 그래프 데이터베이스는 관계형 온라인 트랜잭션 처리(OLTP) 데이터베이스를 번역한 기술입니다. 반면, 그래프 컴퓨팅 엔진은 대량 분석을 위해 온라인 분석 처리(OLAP)에 사용됩니다.[5] 그래프 데이터베이스는 오픈 소스 그래프 데이터베이스의 도입과 [6]함께 독점 그래프 데이터베이스를 사용하는 주요 기술 기업의 성공으로 인해 2000년대에 상당한 관심을 끌었습니다.
한 연구는 RDBMS가 그래프 쿼리를 실행할 때 기존 그래프 분석 엔진과 성능이 "비교 가능"하다고 결론 내렸습니다.[7]
역사
1960년대 중반 IBM의 IMS와 같은 내비게이션 데이터베이스는 계층 모델에서 트리와 같은 구조를 지원했지만 엄격한 트리 구조는 가상 기록으로 우회할 수 있었습니다.[8][9]
그래프 구조는 1960년대 후반부터 네트워크 모델 데이터베이스에 표현될 수 있었습니다. 1959년 코볼을 정의한 CODASYL은 1969년 네트워크 데이터베이스 언어를 정의했습니다.
레이블이 지정된 그래프는 논리 데이터 모델과 같이 1980년대 중반의 그래프 데이터베이스에 표시될 수 있습니다.[10][11]
상용 객체 데이터베이스(ODBMS)는 1990년대 초반에 등장했습니다. 2000년 Object Data Management Group은 ODMG'93 출판물에 객체 및 관계(그래프) 구조를 정의하기 위한 표준 언어를 발표했습니다.
그래프 데이터베이스에 대한 몇 가지 개선 사항은 1990년대 초에 나타났고, 1990년대 후반에는 웹 페이지를 색인화하려는 노력으로 가속화되었습니다.
2000년대 중후반에 Neo4j, Oracle Spatial and Graph 등 ACID가 보장된 상용 그래프 데이터베이스를 사용할 수 있게 되었습니다.
2010년대에 상업용 ACID 그래프 데이터베이스를 수평으로 확장할 수 있게 되었습니다. 또한 SAP HANA는 인메모리 및 칼럼니스트 기술을 그래프 데이터베이스에 도입했습니다.[12] 또한 2010년대에는 OrientDB, ArangoDB 및 MarkLogic(7.0 버전부터)과 같이 그래프 모델(및 관계형 데이터베이스 또는 문서 지향 데이터베이스와 같은 기타 모델)을 지원하는 다중 모델 데이터베이스를 사용할 수 있게 되었습니다. 이 시기에 특히 소셜 미디어 회사의 등장으로 다양한 유형의 그래프 데이터베이스가 소셜 네트워크 분석과 함께 인기를 끌게 되었습니다. 또한 10년 동안 아마존 넵튠과 Neo4j AuraDB와 같은 클라우드 기반 그래프 데이터베이스를 사용할 수 있게 되었습니다.
배경
그래프 데이터베이스는 데이터를 개념적으로 볼 때 보여줍니다. 이는 데이터를 노드로 전송하고 데이터의 관계를 에지로 전송함으로써 수행됩니다.
그래프 데이터베이스는 그래프 이론에 기반을 둔 데이터베이스입니다. 노드 또는 에지가 될 수 있는 개체 집합으로 구성됩니다.
- 노드는 사람, 비즈니스, 계정 또는 추적할 다른 항목과 같은 엔티티 또는 인스턴스를 나타냅니다. 관계형 데이터베이스의 레코드, 관계 또는 행 또는 문서 저장소 데이터베이스의 문서와 거의 동일합니다.
- 그래프 또는 관계라고도 하는 에지는 노드와 다른 노드를 연결하는 선으로, 노드 간의 관계를 나타냅니다. 노드, 속성 및 에지의 연결 및 상호 연결을 조사할 때 의미 있는 패턴이 나타납니다. 가장자리는 방향을 지정하거나 방향을 지정하지 않을 수 있습니다. 무방향 그래프에서 두 노드를 연결하는 간선은 하나의 의미를 갖습니다. 유향 그래프에서 서로 다른 두 노드를 연결하는 간선은 방향에 따라 서로 다른 의미를 갖습니다. 에지는 관계형 모델이나 문서 저장소 모델에서 직접 구현되지 않는 추상화를 나타내는 그래프 데이터베이스의 핵심 개념입니다.
- 속성은 노드와 관련된 정보입니다. 예를 들어, 위키백과가 노드 중 하나였다면 위키백과의 어떤 측면이 주어진 데이터베이스에 해당하는지에 따라 웹사이트, 참고 자료 또는 문자 w로 시작하는 단어와 같은 속성에 연결될 수 있습니다.
그래프 모델
레이블이 지정된 특성 그래프
레이블이 지정된 속성 그래프 모델은 노드, 관계, 속성 및 레이블 집합으로 표시됩니다. 데이터 노드와 데이터 노드의 관계는 모두 이름이 지정되며 키-값 쌍으로 표시되는 속성을 저장할 수 있습니다. 노드는 그룹화되도록 레이블을 지정할 수 있습니다. 관계를 나타내는 간선은 항상 시작 노드와 종료 노드를 가지며,[13] 그래프를 방향 그래프로 만드는 두 가지 특성을 갖습니다. 관계는 속성을 가질 수도 있습니다. 이는 노드의 관계에 추가 메타데이터와 의미론을 제공하는 데 유용합니다.[14] 관계를 직접 저장하면 일정한 시간 이동이 가능합니다.[15]
RDF(Resource Description Framework)
RDF 그래프 모델에서는 정보를 추가할 때마다 별도의 노드가 표시됩니다. 예를 들어, 사용자가 그래프에서 구별되는 노드로 표현된 사람의 이름 속성을 추가해야 하는 시나리오를 상상해 보십시오. 레이블이 지정된 속성 그래프 모델에서는 이름 속성을 사용자의 노드에 추가합니다. 그러나 RDF에서 사용자는 다음과 같은 별도의 노드를 추가해야 합니다. hasName
원래 사용자 노드에 연결합니다. 특히 RDF 그래프 모델은 노드와 아크로 구성됩니다. RDF 그래프 표기법 또는 문장은 주어에 대한 노드, 객체에 대한 노드 및 술어에 대한 호로 표현됩니다. 노드는 비워 둘 수 있고, 리터럴 및/또는 URI에 의해 식별될 수 있습니다. 호는 URI에 의해서도 식별될 수 있습니다. 노드에 대한 리터럴은 평문(비입력)과 타이핑의 두 가지 유형일 수 있습니다. 일반 리터럴에는 어휘 형식과 선택적으로 언어 태그가 있습니다. 입력된 리터럴은 특정 데이터 유형을 식별하는 URI가 있는 문자열로 구성됩니다. 데이터에 URI가 없을 때 데이터의 상태를 정확하게 설명하기 위해 블랭크 노드를 사용할 수 있습니다.[16]
특성.
그래프 데이터베이스는 그래프와 같은 쿼리를 위한 강력한 도구입니다. 예를 들어, 그래프에서 두 노드 사이의 최단 경로를 계산합니다. 그래프 데이터베이스를 통해 자연스러운 방식(예: 그래프의 직경 계산 또는 커뮤니티 감지)으로 다른 그래프 유사 쿼리를 수행할 수 있습니다.
그래프는 유연하므로 애플리케이션 기능의 손실 없이 기존 그래프에 새로운 데이터를 삽입할 수 있습니다. 데이터베이스 설계자가 데이터베이스의 향후 사용 사례에 대한 광범위한 세부 사항을 계획할 필요가 없습니다.
보관소
그래프 데이터베이스의 기본 저장 메커니즘은 다양할 수 있습니다. 일부는 관계형 엔진에 의존하여 그래프 데이터를 테이블에 "저장"합니다(테이블은 논리적 요소이므로 이 접근 방식은 그래프 데이터베이스, 그래프 데이터베이스 관리 시스템 및 데이터가 실제로 저장되는 물리적 장치 간에 또 다른 수준의 추상화를 부과합니다). 다른 사람들은 스토리지에 키-밸류 스토어 또는 문서 중심 데이터베이스를 사용하여 본질적으로 NoSQL 구조를 만듭니다. 노드는 다른 문서 저장소로 표현되지만, 두 개의 서로 다른 노드를 연결하는 에지는 문서 내부에 특별한 속성(a _from 및 _to_attributes)을 유지합니다.
인덱스 없는 인접성
데이터 조회 성능은 특정 노드에서 다른 노드로의 액세스 속도에 따라 달라집니다. 인덱스가 없는 인접성은 노드가 직접 물리적 RAM 주소를 갖도록 강제하고 물리적으로 인접한 다른 노드를 가리키기 때문에 빠른 검색이 가능합니다. 인덱스가 없는 기본 그래프 시스템은 노드 간의 링크를 찾기 위해 다른 유형의 데이터 구조를 이동할 필요가 없습니다. 노드 중 하나가 검색되면 그래프에서 직접 관련된 노드가 캐시에 저장되므로 사용자가 처음 노드를 가져올 때보다 데이터 조회 속도가 훨씬 빨라집니다. 그러나 이러한 이점에는 비용이 듭니다. 인덱스가 없는 인접성은 그래프 횡단을 사용하지 않는 쿼리의 효율성을 희생시킵니다. 네이티브 그래프 데이터베이스는 인덱스가 없는 인접성을 사용하여 저장된 데이터에 대한 CRUD 작업을 처리합니다.
적용들
데이터 종류별로 여러 범주의 그래프가 인식되었습니다. Gartner는 다음과 같은 5가지 광범위한 범주의 그래프를 제안합니다.[17]
- 소셜 그래프: 이것은 사람들 사이의 연결에 관한 것입니다; 예를 들어 페이스북, 트위터, 그리고 6도의 분리에 대한 생각이 있습니다.
- 의도 그래프: 이것은 추론과 동기를 다룹니다.
- 소비 그래프: "결제 그래프"라고도 하는 소비 그래프는 소매 산업에서 많이 사용됩니다. 아마존, 이베이, 월마트와 같은 전자 상거래 회사는 소비 그래프를 사용하여 개별 고객의 소비를 추적합니다.
- 관심 그래프: 이것은 사람의 관심사를 매핑하고 종종 소셜 그래프로 보완됩니다. 웹 페이지를 인덱싱하는 것이 아니라 관심사별로 웹을 매핑하여 웹 조직의 이전 혁명을 따를 가능성이 있습니다.
- 모바일 그래프: 이것은 모바일 데이터로 구축되었습니다. 미래의 모바일 데이터에는 웹, 애플리케이션, 디지털 지갑, GPS 및 사물 인터넷(IoT) 장치의 데이터가 포함될 수 있습니다.
관계형 데이터베이스와의 비교
에드가 F 때부터. 관계형 모델에 관한 Codd의 1970년 논문,[18] 관계형 데이터베이스는 대규모 데이터 스토리지 시스템에 대한 사실상의 업계 표준이었습니다. 관계형 모델은 데이터를 많은 테이블로 분리하고 데이터베이스 내의 중복 데이터를 제거하는 엄격한 스키마 및 데이터 정규화가 필요합니다. 데이터 일관성을 유지하고 ACID 트랜잭션을 지원하기 위해 데이터를 정규화합니다. 그러나 이는 관계를 쿼리하는 방법에 제한을 가합니다.
관계형 모델의 설계 동기 중 하나는 빠른 줄 단위 액세스를 달성하는 것이었습니다.[18] 저장된 데이터 사이에 복잡한 관계를 형성할 필요가 있을 때 문제가 발생합니다. 관계 모델을 사용하여 관계를 분석할 수 있지만 여러 테이블에 걸쳐 다양한 속성에 대해 많은 조인 작업을 수행하는 복잡한 쿼리가 필요합니다. 관계형 모델로 작업할 때는 관계를 검색할 때 외래 키 제약도 고려해야 하므로 추가 오버헤드가 발생합니다.
관계형 데이터베이스와 비교할 때 그래프 데이터베이스는 연관 데이터 세트의[citation needed] 경우 더 빠르고 객체 지향 애플리케이션의 구조에 더 직접적으로 매핑되는 경우가 많습니다. 일반적으로 가입 작업이 필요하지 않기 때문에 대규모 데이터 세트로 더 자연스럽게[citation needed] 확장할 수 있으며, 이는 종종 비용이 많이 들 수 있습니다. 엄격한 스키마에 대한 의존도가 낮기 때문에 스키마가 진화하는 임시 데이터 및 변화하는 데이터를 관리하는 데 더 적합한 것으로 판매됩니다.
반대로 관계형 데이터베이스 관리 시스템은 일반적으로 많은 수의 데이터 요소에 대해 동일한 작업을 수행하는 데 더 빠르기 때문에 자연 구조에서 데이터를 조작할 수 있습니다. 그래프 데이터베이스의 장점과 관계형 데이터베이스에 대한[citation needed] 최근의 인기에도 불구하고 그래프 모델 자체가 기존 관계형 데이터베이스를 대체하는 유일한 이유가 되어서는 안 됩니다. 그래프 데이터베이스는 성능이 몇 배나 향상되고 지연 시간이 짧다는 증거가 있는 경우 관련성이 있을 수 있습니다.[19]
예
관계형 모델은 데이터의 정보를 사용하여 데이터를 함께 수집합니다. 예를 들어, 전화 번호에 지역 번호 "311"이 포함된 모든 "사용자"를 찾을 수 있습니다. 이 작업은 선택한 데이터스토어 또는 테이블을 검색하여 문자열 "311"에 대한 선택한 전화 번호 필드를 검색하여 수행됩니다. 이것은 큰 테이블에서 시간이 많이 소요되는 프로세스일 수 있으므로 관계형 데이터베이스는 데이터를 선택한 데이터와 레코드의 고유 키(또는 기본 키)만 포함하는 더 작은 하위 테이블에 저장할 수 있는 인덱스를 제공합니다. 전화 번호가 색인화된 경우, 같은 검색이 작은 색인 테이블에서 발생하여 일치하는 레코드의 키를 수집한 다음 해당 키가 있는 레코드를 주 데이터 테이블에서 찾습니다. 일반적으로 테이블은 키를 통한 조회를 매우 빠르게 할 수 있는 방식으로 저장됩니다.[20]
관계형 데이터베이스는 본질적으로 레코드 간의 고정된 관계에 대한 아이디어를 포함하지 않습니다. 대신 한 레코드의 고유 키를 다른 레코드의 데이터에 저장함으로써 관련 데이터가 서로 연결됩니다. 예를 들어 사용자의 전자 메일 주소를 포함하는 테이블에는 다음과 같은 데이터 항목이 있습니다. userpk
, 여기에는 연관된 사용자 레코드의 기본 키가 포함됩니다. 사용자와 사용자의 전자 메일 주소를 연결하기 위해 시스템은 먼저 선택한 사용자의 기본 키를 검색하고 해당 키를 검색합니다. userpk
전자 메일 테이블(또는 더 가능성이 높은 인덱스)에 열을 두고 전자 메일 데이터를 추출한 다음 사용자와 전자 메일 레코드를 연결하여 선택한 모든 데이터를 포함하는 복합 레코드를 만듭니다. 조인이라고 하는 이 작업은 계산 비용이 많이 들 수 있습니다. 쿼리의 복잡성, 조인 수 및 다양한 키 인덱싱에 따라 시스템은 여러 테이블과 인덱스를 검색한 다음 이를 모두 정렬하여 일치시켜야 할 수도 있습니다.[20]
이와는 대조적으로 그래프 데이터베이스는 레코드 간의 관계를 직접 저장합니다. 사용자의 키를 찾아 전자 메일 주소를 찾는 대신 userpk
열, 사용자 레코드에는 이메일 주소 레코드를 직접 참조하는 포인터가 포함되어 있습니다. 즉, 사용자를 선택한 후 포인터를 전자 메일 레코드로 바로 이동할 수 있으므로 일치하는 레코드를 찾기 위해 전자 메일 테이블을 검색할 필요가 없습니다. 이를 통해 비용이 많이 드는 가입 작업을 제거할 수 있습니다. 예를 들어, 지역 코드 "311"에 있는 사용자의 모든 전자 메일 주소를 검색하는 경우, 엔진은 먼저 "311"에 있는 사용자를 찾기 위해 일반적인 검색을 수행한 다음 해당 레코드에서 찾은 링크를 따라 전자 메일 주소를 검색합니다. 관계형 데이터베이스는 먼저 "311"에 있는 모든 사용자를 찾고, 기본 키 목록을 추출하고, 해당 기본 키로 전자 메일 테이블에 있는 레코드를 다시 검색하고, 일치하는 레코드를 함께 연결합니다. 이러한 유형의 일반적인 작업의 경우 이론적으로 그래프 데이터베이스가 더 빠를 것입니다.[20]
그래프 접근 방식의 진정한 값은 한 수준 이상의 깊이를 가진 검색을 수행할 때 분명해집니다. 예를 들어, "311" 지역 코드에 "구독자"(사용자와 다른 사용자를 연결하는 표)가 있는 사용자를 검색하는 것을 고려해 보겠습니다. 이 경우 관계형 데이터베이스는 먼저 "311"의 지역 코드를 가진 모든 사용자를 검색한 다음 가입자 테이블에서 해당 사용자를 검색한 다음 마지막으로 사용자 테이블을 검색하여 일치하는 사용자를 검색해야 합니다. 대조적으로 그래프 데이터베이스는 "311"의 모든 사용자를 검색한 다음 가입자 관계를 통해 백링크를 따라 가입자 사용자를 찾습니다. 이렇게 하면 출력을 구성하는 데 필요한 여러 레코드의 모든 임시 데이터를 보관하는 데 필요한 여러 검색, 검색 및 메모리 사용량을 피할 수 있습니다. 빅 O 표기법으로 보면, 이 쿼리는 )+ O) {\n) + O(1)} 시간입니다. 즉, 데이터 크기의 로그에 비례합니다. 반대로, 관계형 버전은 여러 n) {\log n)} 조회와 데이터 레코드를 결합하는 데 한O) O(n)} 시간입니다.
그래프 검색의 상대적 이점은 쿼리의 복잡성에 따라 커집니다. 예를 들어, "바람과 함께 사라지다"에서 주연을 맡았던 다른 배우와 함께 그 영화에 출연했던 잠수함에 관한 영화"를 알고 싶을 수도 있습니다. 이것은 시스템이 먼저 '바람과 함께 사라지다'의 배우를 찾고, 그들이 출연했던 모든 영화를 찾고, '바람과 함께 사라지다'의 주연이 아니었던 모든 영화의 배우를 찾고, 그리고 나서 그들이 출연했던 모든 영화를 찾아서, 마지막으로 '잠수함'이 포함된 설명을 가진 배우들에게 그 목록을 필터링하는 것을 요구합니다. 관계형 데이터베이스에서는 영화와 배우 표를 통해 여러 번 개별적으로 검색하고, 잠수함 영화를 다시 검색하고, 해당 영화의 모든 배우를 찾은 다음 (대) 수집된 결과를 비교해야 합니다. 대조적으로, 그래프 데이터베이스는 Gone With the Wind에서 Clark Gable로 걸어가서, 그가 출연했던 영화들에 대한 링크를 모으고, 그 영화들로부터 다른 배우들에 대한 링크를 모은 다음, 그 배우들로부터 영화 목록으로 다시 이동합니다. 그런 다음 결과 영화 목록에서 "잠수함"을 검색할 수 있습니다. 이 모든 것은 한 번의 검색을 통해 수행할 수 있습니다.[21]
속성은 이 구조에 추상화 계층을 추가하여 많은 일반 쿼리를 개선합니다. 속성은 기본적으로 모든 레코드 또는 경우에 따라 에지에 적용할 수 있는 레이블입니다. 예를 들어, 클라크 게이블을 "배우"로 분류할 수 있습니다. 그러면 시스템이 감독이나 카메라 운영자가 아닌 배우인 모든 기록을 신속하게 찾을 수 있습니다. 가장자리에 라벨을 붙이는 것이 허용된다면, Gone With the Wind와 Clark Gable의 관계를 "리드"라고 부를 수도 있고, 영화 "Gone With the Wind"에서 "리드"인 "배우"인 사람들에 대한 검색을 수행함으로써, 데이터베이스는 Vivien Leigh, Olivia de Havilland, 그리고 Clark Gable을 제작할 것입니다. 동등한 SQL 쿼리는 사람과 영화를 연결하는 테이블에 추가된 데이터에 의존해야 하므로 쿼리 구문이 더욱 복잡해집니다. 이러한 종류의 레이블은 특정 상황에서 검색 성능을 향상시킬 수 있지만 일반적으로 최종 사용자를 위한 추가 시맨틱 데이터를 제공하는 데 더 유용합니다.[21]
관계형 데이터베이스는 데이터 간의 관계가 1~2단계에 불과한 플랫 데이터 레이아웃에 매우 적합합니다. 예를 들어, 회계 데이터베이스는 특정 고객의 모든 송장에 대한 모든 라인 항목, 즉 3-조인 쿼리를 조회해야 할 수도 있습니다. 그래프 데이터베이스는 더 많은 링크를 포함하는 데이터 세트를 대상으로 합니다. 그들은 특히 "친구" 관계가 본질적으로 무한한 소셜 네트워킹 시스템에 매우 적합합니다. 이러한 속성으로 인해 그래프 데이터베이스는 온라인 시스템 및 빅 데이터 환경에서 점점 더 일반화되는 검색 유형에 자연스럽게 적합합니다. 이러한 이유로 그래프 데이터베이스는 페이스북, 구글, 트위터와 같은 대형 온라인 시스템과 레코드 간의 깊은 연결이 있는 유사한 시스템에 매우 인기가 있습니다.
추가적으로 설명하자면, 두 개의 표를 가진 관계형 모형을 상상해 보십시오: a people
테이블(가 있는) person_id
그리고. person_name
열) 및 a friend
테이블(포함) friend_id
그리고. person_id
, 그것은 외국 열쇠입니다. people
테이블) 이 경우 잭의 친구를 모두 검색하면 다음과 같은 SQL 쿼리가 나타납니다.
선택한다. p2.사람n_n이름 부터 사람 p1 합류하다 친구. ON (p1.person_id = 친구..person_id) 합류하다 사람 p2 ON (p2.person_id = 친구..friend_id) 어디에 p1.사람n_n이름 = '잭';
동일한 쿼리를 -로 변환할 수 있습니다.
- W3C에 의해 표준화되고 여러 RDF 트리플 및 쿼드 스토어에서 사용되는 RDF 그래프 데이터베이스 쿼리 언어인 SPARQL
- 긴 형태
접두사 거품이 있는: <https://xmlns.com/foaf/0.1/ > 선택한다. ?이름 어디에 { ?s a 거품이 있는:사람인 . ?s 거품이 있는:이름. 잭 . ?s 거품이 있는:알고 있는 ?o . ?o 거품이 있는:이름. ?이름 . }
- 숏폼
접두사 거품이 있는: <https://xmlns.com/foaf/0.1/ > 선택한다. ?이름 어디에 { ?s 거품이 있는:이름. 잭 ; 거품이 있는:알고 있는 ?o . ?o 거품이 있는:이름. ?이름 . }
- 긴 형태
- SPARQL을 사용하여 SQL을 확장하는 하이브리드 데이터베이스 쿼리 언어인 SPARQL
선택한다. 사람.이름. 부터 ( SPARQL 접두사 거품이 있는: <https://xmlns.com/foaf/0.1/ > 선택한다. ?이름 어디에 { ?s 거품이 있는:이름. 잭 ; 거품이 있는:알고 있는 ?o . ?o 거품이 있는:이름. ?이름 . } ) ~하듯이 사람 ;
위의 예는 기본 관계 쿼리의 간단한 예시입니다. 그들은 총 데이터 양에 따라 증가하는 관계형 모델의 쿼리 복잡성에 대한 아이디어를 응축합니다. 이에 비해 그래프 데이터베이스 쿼리는 관계 그래프를 쉽게 정렬하여 결과를 제시할 수 있습니다.
그래프 데이터베이스의 단순, 요약 및 선언 쿼리가 관계형 데이터베이스에 비해 반드시 우수한 성능을 제공하지는 않는다는 결과도 있습니다. 그래프 데이터베이스는 데이터의 직관적인 표현을 제공하지만, 관계형 데이터베이스는 세트 작업이 필요할 때 더 나은 결과를 제공합니다.[15]
그래프 데이터베이스 목록
다음은 주목할 만한 그래프 데이터베이스 목록입니다.
이름. | 현재의 버전 | 최근. 풀어주다 날짜. (YYY-MM-DD) | 소프트웨어 면허증. | 프로그래밍 언어 | 묘사 |
---|---|---|---|---|---|
에어로스피크 | 7.0 | 2023-11-15 | 독점적 | C | Aerospike Graph는 Aerospike의 검증된 실시간 데이터 플랫폼을 기반으로 구축된 확장성이 높고 지연 시간이 짧은 속성 그래프 데이터베이스입니다. Aerospike Graph는 Apache Tinkerpop 그래프 컴퓨팅 엔진을 통해 가장 확장성이 뛰어난 실시간 NoSQL 데이터베이스인 Aerospike Database의 엔터프라이즈 기능을 속성 그래프 데이터 모델과 결합합니다. 개발자는 강력한 비즈니스 프로세스를 직접 작성할 수 있는 Gremlin 쿼리 언어에 대한 기본 지원을 누릴 수 있습니다. |
알레그로그래프 | 7.0.0 | 2020-04 | 독점 고객: Eclipse Public License v1 | C#, C, Common Lisp, Java, Python | RDF(Resource Description Framework) 및 그래프 데이터베이스. |
아마존 해왕성 | 1.3.1.0 | 2024-03-06[22] | 독점적 | 미공시 | 아마존 넵튠은 Amazon.com 에 의해 완전히 관리되는 그래프 데이터베이스입니다. 그것은 웹 서비스로 사용되며, 아마존 웹 서비스의 일부입니다. 인기 있는 그래프 모델 속성 그래프 및 W3C의 RDF와 해당 쿼리 언어인 Apache TinkerPop, Gremlin, SPARQL 및 openCypher를 지원합니다. |
AnzoGraph DB | 2.1 | 2020-02 | 독점적 | C, C++ | AnzoGraph DB는 SPARQL 및 Cypher Query Language를 지원하여 수조 개의 관계를 분석할 수 있도록 구축된 광범위한 병렬 기본 GOLAP(Graph Online Analytics Processing) 스타일 데이터베이스입니다. AnzoGraph DB는 대규모 시맨틱 트리플 데이터 세트의 대화형 분석을 위해 설계되었지만 제안된 W3C 표준에 따라 레이블이 지정된 속성도 지원합니다.[23][24][25][26] |
아랑고DB | 3.9.1 | 2022-04 | 무료 아파치 2, 독점 제품 | C++, 자바스크립트,NET, Java, Python, Node.js, PHP, Scala, Go, Ruby, Elixir | ArangoDB Inc.가 개발한 NoSQL 네이티브 그래프 데이터베이스 시스템은 3가지 데이터 모델(키/값, 문서, 그래프)을 지원하며, 하나의 데이터베이스 코어와 AQL(ArangoDB Query Language)이라는 통합 쿼리 언어를 지원합니다. 데이터 센터 간 복제, 자동 샤딩, 자동 페일오버 및 기타 기능을 통해 확장성과 고가용성을 제공합니다. |
애저 코스모스 DB | 2017 | 독점적 | 미공시 | Apache Gremlin 쿼리 언어를 사용하여 그래프 개념을 지원하는 다중 모달 데이터베이스 | |
데이터스탁스 기업 그래프 | v6.0.1 | 2018-06 | 독점적 | 자바 | 분산된 실시간 확장 가능한 데이터베이스, Tinkerpop 지원 및 Cassandra와[27] 통합 |
무한 그래프 | 2021.2 | 2021-05 | 독점적, 상업적, 무료 50GB 버전 | Java, C++, 'DO' 쿼리 언어 | 복잡한 실시간 쿼리 및 작업을 위한 분산, 클라우드 지원, 대규모 확장 가능한 그래프 데이터베이스입니다. Vertex 및 Edge 개체에는 그래프 탐색 및 경로 찾기 작업의 속도를 상당히 높이는 고유한 64비트 개체 식별자가 있습니다. 동시 병렬 쿼리와 함께 그래프에 대한 배치 또는 스트리밍 업데이트를 지원합니다. InfiniteGraph의 'DO' 쿼리 언어는 값 기반 쿼리와 복잡한 그래프 쿼리를 모두 가능하게 합니다. InfiniteGraphis는 그래프 데이터베이스를 넘어 복잡한 개체 쿼리도 지원합니다. |
야누스 그래프 | 1.0.0 | 2023-10-21[28] | 아파치 2 | 자바 | Linux Foundation 산하의 여러 시스템 클러스터 그래프 데이터베이스에 분산된 확장 가능한 오픈 소스, 다양한 스토리지 백엔드(Apache Cassandra, Apache HBase, Google Cloud Bigtable, Oracle Berkeley DB),[29] 글로벌 그래프 데이터 분석, 보고 및 추출, 변환, 빅데이터 플랫폼(Apache Spark, Apache Giraph, Apache Hadoop)과의 통합을 통한 로드(ETL), 외부 인덱스 스토리지(Elastic search, Apache Solr, Apache Lucene)를 통한 지오, 숫자 범위 및 전체 텍스트 검색을 지원합니다.[30] |
마크로직 | 8.0.4 | 2015 | 독점적인 프리웨어 개발자 버전 | 자바 | 문서(JSON 및 XML) 및 시맨틱 그래프 데이터(RDF 트리플)를 저장하는 다중 모델 NoSQL 데이터베이스; 또한 검색 엔진이 내장되어 있습니다. |
마이크로소프트 SQL 서버 2017 | RC1 | 독점적 | SQL/T-SQL, R, Python | 다대다 관계를 모델링할 수 있는 그래프 데이터베이스 기능을 제공합니다. 그래프 관계는 Transact-SQL에 통합되며 SQL Server를 기본 데이터베이스 관리 시스템으로 사용합니다.[31] | |
성운 그래프 | 3.7.0 | 2024-03 | 오픈 소스 에디션은 Apache 2.0, Common Clause 1.0 아래에 있습니다. | C++, Go, Java, Python | 밀리초의 지연 시간으로 수십억 개의 정점과 수조 개의 에지를 저장하고 처리하기 위한 확장 가능한 오픈 소스 분산 그래프 데이터베이스. 선형 확장성을 위해 공유 없음 분산 아키텍처를 기반으로 설계되었습니다.[32] |
네오4j | 5.18 | 2024-03-13[33] | GPLv3 Community Edition, 엔터프라이즈 및 고급 에디션용 상용 및 AGPLv3 옵션 | 자바.NET, 자바스크립트, 파이썬, Go, Ruby, PHP, R, Erlang/Elixir, C/C++, Clojure, Perl, Haskell | 오픈 소스는 ACID를 지원하며 엔터프라이즈 구축을 위한 고가용성 클러스터링 기능을 갖추고 있으며, 완전한 트랜잭션 지원과 시각적 노드 링크 그래프 탐색기를 포함하는 웹 기반 관리 기능을 제공합니다. REST 웹 API 인터페이스를 내장하여 대부분의 프로그래밍 언어에서 액세스할 수 있으며, 공식 드라이버가 포함된 독점 볼트 프로토콜을 제공합니다. |
텍스트 그래프로 이동DB | 10.6.1 | 2024-02-20[34] | 독점, Standard 및 Enterprise Edition은 상업용, Free Edition은 무료입니다. | 자바 | RDF 및 SPARQL을 지원하는 매우 효율적이고 강력한 시맨틱 그래프 데이터베이스로 고가용성 클러스터로도 사용할 수 있습니다. 표 형식의 데이터를 수집하고 조정하기 위한 OpenRefin과 온톨로지 기반 데이터 액세스를 위한 상단을 통합합니다. Lucene, SOLR 및 Elastic search for full text 및 Faceted search, Kafka for event 및 stream processing. OGC GeoSPARQL을 지원하며, 지식 그래프에 대한 JDBC 액세스를 제공합니다. |
오픈링크 비르투오소 | 8.2 | 2018-10 | Open Source Edition은 GPLv2이며 Enterprise Edition은 독점 제품입니다. | C, C++ | SQL 테이블 및/또는 RDF 그래프로 모델링된 데이터에 대한 선언(Data Definition and Data Manipulation) 작업을 위해 SQL 및 SPARQL을 모두 지원하는 다중 모델(Hybrid) 관계형 데이터베이스 관리 시스템(RDBMS). 또한 RDF-Turtle, RDF-N-Triples, RDF-XML, JSON-LD의 인덱싱 및 CSV, XML 및 JSON을 포함한 다양한 문서 유형의 관계(SQL 테이블 또는 RDF 그래프) 매핑 및 생성을 지원합니다. 로컬 인스턴스 또는 임베디드 인스턴스(NEPOMUK 시맨틱 데스크톱에서 사용됨), 단일 인스턴스 네트워크 서버 또는 공유 없음 탄력 클러스터 다중 인스턴스 네트워크 서버로[35] 배포할 수 있습니다. |
Oracle RDF Graph; part of Oracle Database | 21c | 2020 | Proprietary | SPARQL, SQL | RDF Graph capabilities as features in multi-model Oracle Database: RDF Graph: comprehensive W3C RDF graph management in Oracle Database with native reasoning and triple-level label security. ACID, high-availability, enterprise scale. Includes visualization, RDF4J, and native end Sparql end point. |
Oracle Property Graph; part of Oracle Database | 21c | 2020 | Proprietary; Open Source language specification | PGQL, Java, Python | Property Graph; consisting of a set of objects or vertices, and a set of arrows or edges connecting the objects. Vertices and edges can have multiple properties, which are represented as key–value pairs. Includes PGQL, an SQL-like graph query language and an in-memory analytic engine (PGX) nearly 60 prebuilt parallel graph algorithms. Includes REST APIs and graph visualization. |
OrientDB | 3.2.28 | 2024-02 | Community Edition is Apache 2, Enterprise Edition is commercial | Java | Second-generation[clarification needed] distributed graph database with the flexibility of documents in one product (i.e., it is both a graph database and a document NoSQL database); licensed under open-source Apache 2 license; and has full ACID support; it has a multi-master replication ; supports schema-less, -full, and -mixed modes; has security profiling based on user and roles; supports a query language similar to SQL. It has HTTP REST and JSON API. |
RedisGraph | 2.0.20 | 2020-09 | Redis Source Available License | C | In-memory, queryable Property Graph database which uses sparse matrices to represent the adjacency matrix in graphs and linear algebra to query the graph.[36] |
SAP HANA | 2.0 SPS 05 | 2020-06[37] | Proprietary | C, C++, Java, JavaScript and SQL-like language | In-memory ACID transaction supported property graph[38] |
Sparksee | 5.2.0 | 2015 | Proprietary, commercial, freeware for evaluation, research, development | C++ | High-performance scalable database management system from Sparsity Technologies; main trait is its query performance for retrieving and exploring large networks; has bindings for Java, C++, C#, Python, and Objective-C; version 5 is the first graph mobile database. |
초현실적DB | 1.1.1 | 2024-01 | 비즈니스 소스 라이센스 및 4년 후 Apache 라이센스 제공 | 녹 | 다중 modal 그래프, 관계형, 문서 및 벡터 데이터베이스 |
스르르르 기업 | 2.0 | 2015-02 | 독점적 | 자바 | 셀 수준의 보안과 대량[40] 확장성을 특징으로 하는 분산 실시간 그래프 데이터베이스 |
테라데이터 아스터 | 7 | 2016 | 독점적 | Java, SQL, Python, C++, R | 네이티브 SQL, MapReduce 및 그래프 데이터 저장 및 조작을 지원하는 특허받은 엔진을 통합한 대규모 병렬 처리(MPP) 데이터베이스, 분석 기능 라이브러리 세트 및 데이터 시각화[41] 제공 |
종착역DB | 11.0.6 | 2023-05-03[42] | 아파치 2 | Prolog, Rust, Python, JSON-LD | 문서 중심 지식 그래프; 문서의 단순성을 갖춘 엔터프라이즈 지식 그래프의 힘. |
타이거 그래프 | 3.9.3 | 2023[43] | 독점적 | C++ | MPP(Massive Parallel Processing) 네이티브 그래프 데이터베이스 관리 시스템[44] |
타입DB | 2.14.0 | 2022-11[45] | 무료, GNU AGPLv3, 독점적 | 자바, 파이썬, 자바스크립트 | TypeDB는 풍부하고 논리적인 유형의 시스템을 갖춘 강력한 유형의 데이터베이스입니다. TypeDB는 복잡한 문제를 해결할 수 있도록 지원하며, TypeQL은 쿼리 언어입니다. TypeDB를 사용하면 논리 및 객체 지향 원리를 기반으로 도메인을 모델링할 수 있습니다. 유형 계층, 역할 및 규칙뿐만 아니라 엔터티, 관계 및 속성 유형으로 구성된 TypeDB를 사용하면 조인 테이블, 열, 문서, 정점, 에지 및 속성과 달리 상위 수준을 생각할 수 있습니다.[promotion?] |
그래프 쿼리 프로그래밍 언어
- AQL(ArangoDB Query Language): 문서와 그래프 모두를 위해 ArangoDB에서 사용되는 SQL 유사 쿼리 언어
- 사이퍼 쿼리 언어(Cypher Query Language): Neo4j용 그래프 쿼리 선언 언어로 그래프에 임시 및 프로그램 방식(SQL 유사)으로 액세스할 수 있습니다.[46]
- GQL: 제안된 ISO 표준 그래프 쿼리 언어
- GraphQL: API를 위한 오픈 소스 데이터 쿼리 및 조작 언어. Dgraph는 DQL(이전의 GraphQL+-)이라는 수정된 GraphQL 언어를 구현합니다.
- 그렘린: 아파치 팅커팝 오픈 소스 프로젝트의[47] 일부인 그래프 프로그래밍 언어
- SPARQL: RDF 형식으로 저장된 데이터를 검색하고 조작할 수 있는 RDF 데이터베이스용 쿼리 언어
- 일반 경로 쿼리, 그래프 데이터베이스의 쿼리에 대한 이론적 언어
참고 항목
- 그래프 변환
- 계층형 데이터베이스 모델
- 데이터로그
- 바달로그
- 개체 데이터베이스
- RDF 데이터베이스
- 구조화 스토리지
- 텍스트 그래프
- 위키데이터는 데이터를 그래프 데이터베이스에 저장하는 위키백과 자매 프로젝트입니다. 일반 웹 브라우징을 사용하면 노드를 보고, 가장자리를 따르고, SPARQL 쿼리를 실행할 수 있습니다.
참고문헌
- ^ Bourbakis, Nikolaos G. (1998). Artificial Intelligence and Automation. World Scientific. p. 381. ISBN 9789810226374. Retrieved 2018-04-20.
- ^ Yoon, Byoung-Ha; Kim, Seon-Kyu; Kim, Seon-Young (March 2017). "Use of Graph Database for the Integration of Heterogeneous Biological Data". Genomics & Informatics. 15 (1): 19–27. doi:10.5808/GI.2017.15.1.19. ISSN 1598-866X. PMC 5389944. PMID 28416946.
- ^ Angles, Renzo; Gutierrez, Claudio (1 Feb 2008). "Survey of graph database models" (PDF). ACM Computing Surveys. 40 (1): 1–39. CiteSeerX 10.1.1.110.1072. doi:10.1145/1322432.1322433. S2CID 207166126. Archived from the original (PDF) on 15 August 2017. Retrieved 28 May 2016.
network models [...] lack a good abstraction level: it is difficult to separate the db-model from the actual implementation
- ^ Silberschatz, Avi (28 January 2010). Database System Concepts, Sixth Edition (PDF). McGraw-Hill. p. D-29. ISBN 978-0-07-352332-3.
- ^ Robinson, Ian (2015-06-10). Graph Databases: New Opportunities for Connected Data. O'Reilly Media, Inc. p. 4. ISBN 9781491930861.
- ^ "Graph Databases Burst into the Mainstream". www.kdnuggets.com. Retrieved 2018-10-23.
- ^ Fan, Jing; Gerald, Adalbert (2014-12-25). The case against specialized graph analytics engines (PDF). Conference on Innovative Data Systems Research (CIDR).
- ^ Silberschatz, Avi (28 January 2010). Database System Concepts, Sixth Edition (PDF). McGraw-Hill. p. E-20. ISBN 978-0-07-352332-3.
- ^ Parker, Lorraine. "IMS Notes". vcu.edu. Retrieved 31 May 2016.
- ^ Angles, Renzo; Gutierrez, Claudio (1 Feb 2008). "Survey of graph database models" (PDF). ACM Computing Surveys. 40 (1): 1–39. CiteSeerX 10.1.1.110.1072. doi:10.1145/1322432.1322433. S2CID 207166126. Archived from the original (PDF) on 15 August 2017. Retrieved 28 May 2016.
network models [...] lack a good abstraction level: it is difficult to separate the db-model from the actual implementation
- ^ Kuper, Gabriel M. (1985). The Logical Data Model: A New Approach to Database Logic (PDF) (Ph.D.). Docket STAN-CS-85-1069. Archived (PDF) from the original on June 30, 2016. Retrieved 31 May 2016.
- ^ "SAP Announces New Capabilities in the Cloud with HANA". 2014-10-22. Retrieved 2016-07-07.
- ^ Frisendal, Thomas (2017-09-22). "Property Graphs". graphdatamodeling.com. Retrieved 2018-10-23.
- ^ Das, S; Srinivasan, J; Perry, Matthew; Chong, Eugene; Banerjee, Jay (2014-03-24). "A Tale of Two Graphs: Property Graphs as RDF in Oracle".
{{cite journal}}
: 저널 인용은 다음과 같습니다.journal=
(도움말) - ^ a b Have, Christian Theil; Jensen, Lars Juhl (2013-10-17). "Are graph databases ready for bioinformatics?". Bioinformatics. 29 (24): 3107–3108. doi:10.1093/bioinformatics/btt549. ISSN 1460-2059. PMC 3842757. PMID 24135261.
- ^ "Resource Description Framework (RDF): Concepts and Abstract Syntax". www.w3.org. Retrieved 2018-10-24.
- ^ "The Competitive Dynamics of the Consumer Web: Five Graphs Deliver a Sustainable Advantage". www.gartner.com. Retrieved 2018-10-23.
- ^ a b Codd, E. F. (1970-06-01). "A relational model of data for large shared data banks". Communications of the ACM. 13 (6): 377–387. doi:10.1145/362384.362685. ISSN 0001-0782. S2CID 207549016.
- ^ "Graph Databases, 2nd Edition". O’Reilly Safari. Retrieved 2018-10-23.
- ^ a b c d "From Relational to Graph Databases". Neo4j.
- ^ a b "Examples where Graph databases shine: Neo4j edition", ZeroTurnaround
- ^ "Amazon Neptune Engine Version 1.3.1.0 (2024-03-06)". Docs.AWS.Amazon.com. Amazon Web Services. Retrieved 13 March 2024.
- ^ "In-memory massively parallel distributed graph database purpose-built for analytics". CambridgeSemantics.com. Retrieved 2018-02-20.
- ^ Rueter, John (15 February 2018). "Cambridge Semantics announces AnzoGraph graph-based analytics support for Amazon Neptune and graph databases". BusinessWire.com. Retrieved 20 February 2018.
- ^ Zane, Barry (2 November 2016). "Semantic graph databases: a worthy successor to relational databases". DBTA.com. Database Trends and Applications. Retrieved 20 February 2018.
- ^ "Cambridge Semantics announces AnzoGraph support for Amazon Neptune and graph databases". DBTA.com. Database Trends and Applications. 2018-02-15. Retrieved 2018-03-08.
- ^ Woodie, Alex (21 June 2016). "Beyond Titan: the evolution of DataStax's new graph database". Datanami.com. Retrieved 9 May 2017.
- ^ "release 1.0.0 · JanusGraph/janusgraph". GitHub.com. 21 October 2023.
- ^ "JanusGraph storage backends". docs.JanusGraph.org. Archived from the original on 2018-10-02. Retrieved 2018-10-01.
- ^ "JanusGraph index storages". docs.JanusGraph.org. Archived from the original on 2018-10-02. Retrieved 2018-10-01.
- ^ "What's new in SQL Server 2017". Docs.Microsoft.com. Microsoft Corp. 19 April 2017. Retrieved 9 May 2017.
- ^ "Nebula Graph debuts for big data analytics discovery". Datanami.com. 29 June 2020. Retrieved 2 December 2020.
- ^ "Release notes: Neo4j 5". Neo4j.com. Neo4j Graph Database Platform. Retrieved 2024-03-13.
- ^ "Release Notes". Ontotext GraphDB. 20 February 2024. Retrieved 23 Feb 2024.
- ^ "Clustering deployment architecture diagrams for Virtuoso". Virtuoso.OpenLinkSW.com. OpenLink Software. Retrieved 9 May 2017.
- ^ Ewbank, Key. "RedisGraph reaches general availability". I-Programmer.info.
- ^ "What's new in SAP HANA 2.0 SPS 05". blogs.SAP.com. 2020-06-26. Retrieved 2020-06-26.
- ^ Rudolf, Michael; Paradies, Marcus; Bornhövd, Christof; Lehner, Wolfgang. The graph story of the SAP HANA database (PDF). Lecture Notes in Informatics.
- ^ Wiggers, Kyle (2023-01-04). "SurrealDB raises $6M for its database-as-a-service offering". TechCrunch. Retrieved 2024-01-19.
- ^ Vanian, Jonathan (18 February 2015). "NSA-linked Sqrrl eyes cyber security and lands $7M in funding". Gigaom.com. Gigaom. Archived from the original on 9 March 2019. Retrieved 9 May 2017.
- ^ Woodie, Alex (23 October 2015). "The art of analytics, or what the green-haired people can teach us". Datanami.com. Retrieved 9 May 2017.
- ^ "GitHub Releases". GitHub. Retrieved 2023-07-03.
- ^ "Release notes : TigerGraph : Docs". Docs.TigerGraph.com. TigerGraph. Retrieved 17 June 2022.
- ^ "The Forrester Wave™: graph data platforms, Q4 2020". AWS.Amazon.com. Amazon Web Services. 16 November 2020. Retrieved 16 November 2020.
- ^ "Release TypeDB 2.14.0 · vaticle/typedb". GitHub. Retrieved 2022-11-25.
- ^ Svensson, Johan (5 July 2016). "Guest View: Relational vs. graph databases: Which to use and when?". San Diego Times. BZ Media. Retrieved 30 August 2016.
- ^ TinkerPop, Apache. "Apache TinkerPop". Apache TinkerPop. Retrieved 2016-11-02.