Graph Operations on Non-Graph Databases: Document Stores

안녕, 제 이름은 짐 웨버입니다 저는 Neo4j의 수석 과학자입니다

그리고 오늘, 저는 조금 이야기 할 것입니다 그래프가 아닌 데이터베이스에 대한 그래프 작업 그리고 정말 재미있는 것 작년에 일어난 일입니다 Neo4j 여러분, 우리는 그래프에 영원히 머물 렀습니다 그리고 우리는 멀어지고, 설교하고, 말하고 있습니다

너무 오랫동안 듣게 될 사람에 대한 그래프 그리고 실제로, 지난 1 년 정도 동안, 그래프가 시작된 것 같습니다 데이터베이스 세계에서 주류를 휩쓸고있다 그리고 많은 데이터베이스가 있습니다 전통적으로 다른 데이터 모델을 지원했습니다

이제 그들의 오퍼링에 그래프 지원을 추가하려고합니다 나는 이것이 정말로 흥미있는 것이라고 생각한다 나는 그것이 우리들에게 영향을 줄 것이라고 생각합니다 데이터베이스 시스템에서 작동하는 많은 개발자 커뮤니티입니다 앞으로는 탐험 할 가치가 있습니다

트레이드 오프가 어떻게 될지 이 새로운, 비 네이티브 그래프 기술 기존의 네이티브 그래프 기술에 비해 이제는 문서 데이터베이스에 대해 생각해 봅시다 이제 문서 데이터베이스가 있습니다 그래프의 종류를 제공합니다 문서 세계에서 기본 근본 데이터 구조는 트리입니다 왜냐하면 문서 데이터베이스 근본적으로 고급 파일 캐비닛입니다

문서가 들어가고, 문서가 색인되고, 문서가 나옵니다 이제, 그 문서들로부터 그래프를 구체화하기 위해, 내가해야 할 일, 내가해야 할 일, 어떤 종류의 메타 데이터, 일부 연결된 데이터 관습에 따라, 문서 사이의 링크라고 가정합니다 그리고 나서 나는 효과적으로 해결할 수 있었다 내 B- 트리 색인 또는 유사한 색인 된 링크 그 다음 효과적으로 건너 뛸 수 있어야합니다 N을 다른 문서에 기록하고 헹구고 반복하십시오

그리고 저는 현명하게도 문서 보관소 중 일부는 엔지니어는 이것이 바람직한 것임을 결정했습니다 문서 간 이동 가능 분명히 강력한 아이디어입니다 그래프 세계에 사는 우리 중 사람들은 이해합니다 그 횡단은 엄청나게 강력한 자산입니다 그리고 그들이 한 일은 그들이 그런 종류의 다소 서투른 사용자 수준의 컨벤션, 그리고 그들은 그것을 성문화하려고했습니다

일종의 그래프 연산자가 있습니다 기존의 비 그래프 쿼리 언어에 추가되었습니다 이제 그래프 연산자가 제공합니다 약간의 노력을 통한 통사론 사용자가해야하는 일이었습니다 그래서 그래프 연산자의 종류는 그것을 약간 자동화합니다

커버 아래에서, 그것은 여전히 ​​알고리즘 비용과 같습니다 여전히 B- 트리 스타일 색인입니다 그러나 그래프가 작동하면 비 그래프 방식으로 그래프 작업을하는 지루함 이제이 그래프 연산자를 얻었으니 이제부터 사용할 수 있습니다 내 비 그래프 데이터베이스의 일부 그래프 기능

당신이 조금 긁을 때까지, 그리고 나서 당신은 그것을 실제로 발견합니다, 우리는이 그래프 연산자에별로 도움이되지 않습니다 및 그 기본 구현 기본 구현은 문서에 고유합니다 그런 종류의 저장, 색인, 검색 패턴 합리적인 규모의 데이터베이스에 대해 N 비용을 기록하고, 너가가는 경우에 그것은 상대적으로 느린 일이다

여러 작업을 함께 연결 당신이 그래프를 훑어 볼 때처럼 사실, M log N이됩니다 더 나쁜 것은 우리가 보는 그래프 연산자입니다 그런 시스템에서 인기를 얻고있다 어휘 측면에서 다소 가난합니다

상당히 좁은 견해를 다룹니다 그래프로 실제로 할 수있는 것의 이 기사에서 엔지니어 팀 이것들을 제공 한 사람들은 옳은 일을하려했습니다 그들은 그래프를 확인하려고했습니다 nonnative 한 엔진 위에서 끔찍하게 느리지 않다 그래서 그들은 어느 정도 수준의 비정규 화를했습니다

그리고 몇몇 다른 회고 적 똑똑한 색인 생성, 등등 그럼에도 불구하고, 그들은 반대한다 네이티브 모델의 입자, 네이티브 문서 모델 그리고 우리가 경험적으로 보는 것은 너는이 한계에 부딪치게된다 상대적으로 적당한 깊이의 정규화 해제, 검색에서 깊이 3 정도가됩니다 쿼리 성능이 단순히 절벽 가장자리에서 떨어집니다

최종 사용자 개발자가이 문제를 처리해야하는 방식 그들의 그래프를 평평하게하는 것입니다 그래서 그들은이 벼랑 가장자리에서 떨어지지 않습니다 하지만 그때 그들은 그래프의 고 충실도 모델 이러한 종류의 픽셀 화 된 그래프보기 제공 임의의 기계적 한계 때문입니다 덮개의 밑에, 당연히 엔진 여전히 문서 관리 엔진입니다 핵심 핵심, 당신이 원한다면, 데이터베이스 관리 시스템, 이 링크들에 관해 아무것도 모르고, 그래프에 대해서는 아무것도 모른다

문서 관리, 즉, 사용자로서, 나는 불복하거나 우연히 위반한다 예상되는 협약 중 일부 어떤 그래프 기능이 술어로 만들어 졌는지, 나는 실제로 내 그래프를 망칠 수 있었다 매달려있는 포인터를 남길 수 있습니다 모든 종류의 나쁜 일이 발생할 수 있습니다 그리고 그것은, 아마도, 아마도, 정상적으로 사용하면 내 그래프가 손상 될 수 있습니다

그래프 구조가 손상 될 수 있습니다 그래프 손상의 작은 조각을 기반으로, 나는 그래프에 대한 결정을 내릴 것이다 그 손상된 구조를 떠날 것입니다 퍼졌다 효과적으로 전염은 그래프 주위로 퍼집니다

따라서 정상적으로 작동하는 경우, 나는 이것을 아마도 상상할 수있다 그것은 다소 가난한 어포던스처럼 보입니다 그래프의 중요성을 고려할 때, 우리가 믿는 것처럼, 실제로, 그 공급 업체들이 믿는 것처럼, 왜냐하면 그들은 그들의 시스템에 그래프 지원을 추가하기 때문입니다 나는 이것이 궁극적으로 경험의 수준에 달려 있다고 생각한다 Neo4j의 그래프는 그래프에 깊이 관여했습니다

태어난 기술을 오랫동안 그래프 워크로드가 필요합니다 다른 데이터베이스 학교에서 온 많은 사람들 비슷한 숙달이 있었지만 다른 모델에서는 그러했다 Neo4j가 20 년 가까이에있는 곳 그래프에 대해 생각하는 것, 다른 학교들도 비슷한 기간을 보임 완전히 다른 모델에 대한 생각, 그리고 그래프에서 비교적 얕은 경험 그래서 그들은이 장애물들 중 일부에 충돌 할 것입니다 어떻게 가지 않을지 알아 내려고 노력했다

그들의 모종의 곡식에 맞서서 Neo4j에서는 많은 양의 자산을 제공합니다 그래프 개발자, 시각화와 같은 것들, 정말로, 정말로 즐거운, 광대 한, 풍부한 쿼리 언어를 사용하는 반면, 다른 측면 울타리의, 이런 종류의 것은 존재하지 않습니다 우리가 Neo4j에서 당연시하는 것들 실제로 속성 그래프 모델에 있습니다 관계에 속성을 추가 할 수 있음 사실, 당신의 데이터 모델 다른 문서를 해결하기 위해 색인의 링크를 구체화하고 있습니다 그것은 매우 불편하고 비실용적이며, 불가능하지는 않지만 그러한 관계에 데이터를 두는 것입니다

물론 관계에 대한 데이터도 중요합니다 노드 자체의 데이터로 근본 역학의 관점에서 보면, 나는 그래프가 아주 강하게 요구한다고 생각한다 일관성 모델에 대한 고려 Neo4j는 ACID 트랜잭션입니다 그래프의 일관성을 유지해야합니다

그래서 우리는이 부패를 얻지 못한다 그런 다음 그래프를 통해 퍼집니다 설계된 시스템을 가지고 있다면 더 관대 한 일부 다른 데이터 모델의 경우, 아마도 ACID 트랜잭션이 필요하지 않은 경우, 어쩌면 궁극적 인 일관성과 같은 무언가 너를 위해 충분하다, 그건 밖으로 뛰지 않을거야 그래프 세계에서, 어디에서 필요합니까? 더 강한 형태의 일관성 Neo4j는 인과 관계의 일관성을 지원합니다 다중 데이터 센터 설정에서도, 정확하게 그래프 구조를 그대로 유지합니다

일상적인 업무 측면에서 이러한 것들 중, 그래프 구조를 사용하여, 주문 M을 지불해야하는 경우 로그 N 네오위즈 (Neo4j)가 당신에게 주문하는 비용으로, 당신은 트래버스를하는 것을 볼 수 있습니다 Neo4j에서 훨씬 더 저렴합니다 Neo4j는 또한 그래프 트래버스에 최적화되어 있습니다 비트와 바이트 단위로 잡초에서 바로 아래로 우리는 컴팩트 한 포인터 표현과 같은 것을 가지고 있습니다

우리는 인덱스가없는 인접성을 가지고 있습니다 그리고 실제로, 우리 매장 포맷은 디스크로 바로 내려갑니다 그래프 저장에 최적화되어 있습니다 사실, 우리는 멀리까지 갈 수 있습니다 데이터 구조에서 데이터를 구조와 분리합니다

그리고 우리는 능력을 대단히 강조합니다 믿을 수 없을만큼 높은 성능으로 그 구조를 횡단합니다 반대로, 당신이 가지고있는 것이 B- 트리라면, 당신은 그 자산을 사용할 수 없습니다 그리고 궁극적으로 이것은 더 생각합니다 과학보다는 감정적이지만 그래프 공동체 그래프 기술에 대한 연구가 활발히 진행되고있다

풍부한 경험이 있습니다 실무자, 제 3 자 도구, 타사 라이브러리, 응용 프로그램 매일 배달되는 시스템 Neo4j와 같은 그래프 – 네이티브 플랫폼에서 반면에 확장하려는 경우 기존 문서 데이터베이스 이러한 종류의 것들을 지원하기 위해, 당신은 당신이 이용할 수있는 것을 거의 가지고 있지 않습니다 궁극적으로, 나는 생각한다, 나는 그 그래프를 기쁘게 생각한다 마침내 진지하게 받아 들여지고있다

당신이 큰 테이블에 앉아서 이러한 비 그래프 플랫폼에 의해 그러나 개발자로서, 건축가로서, 엔지니어로서, 과학자로서, 나는 우리가 한 발 물러서 야한다고 생각한다 우리에게 제공되는 기술을 살펴보고, 좋은 그래프 기술이 충분한 지 여부를 결정하고, 또는 실제로, 우리가 정말로 필요로하는지 적절한 네이티브 그래프 기술 중요한 그래프 워크로드의 종류를 수행한다 그것들은 우리를 위해 파이프를 내리고 있습니다 오늘 시간 내 주셔서 감사합니다

이 비디오 카메라로 채팅 할 수있어서 좋았습니다 그리고 지역 사회에서 곧 만나십시오