어떤 데이터베이스가 그래프 및 트리 구조화 된 데이터로 작업하는 것이 가장 좋습니까?

dapper database graph hierarchy tree

문제

가족 사이트를 위해 Dapper.NET과 협력 할 계획입니다.

데이터와 같은 많은 트리가 구조에 존재합니다. 어떤 데이터베이스가 순환 / 비순환 트리 관계로 작업 할 수있는 최상의 쿼리를 제공합니까?

계층 적 쿼리의 용이성 및 성능 비교를 알고 싶습니다. 즉. SQL Server의 CTE, Oracle 등의 Connect By / Start 등이 있습니다.

이러한 종류의 트리 구조화 된 데이터에 대해 Micro ORM으로 dapper가 최선의 선택일까요?

올바른 데이터베이스를 선택하고 이에 대한 마이크로 ORM을 선택하는 데 의견이 필요합니다.

내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다.

인기 답변

내 질문은 여전히 ​​의미합니다 : 얼마나 많은 데이터를 기대합니까?

그러나 그것과 별개로 당신은 당신의 데이터를 위해 선택하는 데이터베이스의 유형이 아니라 테이블 구조이기도합니다. 계층 구조 트리는 필요에 따라 다양한 방법으로 저장 될 수 있습니다.

테이블 구조

특정 구조는 순회 읽기에서는 매우 빠르지 만 삽입 / 업데이트 (예 : 중첩 세트 )에서는 느리고 다른 객체 (인접성 목록)에서는 다른 방식으로 느립니다. 99 : 1 읽기 : 쓰기 비율의 경우 (현재 대부분의 응용 프로그램이 쓰기보다 훨씬 더 많이 읽음) 왼쪽, 오른쪽, 깊이 및 상위가있는 수정 된 중첩 된 구조를 선택할 가능성이 높습니다. 이렇게하면 읽기 시나리오에 가장 적합합니다.

데이터베이스 유형

방대한 양의 데이터를 목표로하지 않는 한 가장 잘 아는 SQL 데이터베이스 (MSSQL, MySQL, Oracle)를 사용하는 것이 좋습니다. 그러나 데이터베이스에 엄청난 수의 계층 노드가 포함될 경우 특수 그래프 지향 데이터베이스를 사용 하여 더 나은 옵션을 선택할 수 있습니다.

8 천만 노드

수정 된 중첩 세트 솔루션을 선택하려면 (음수 값을 사용하므로 삽입 / 업데이트 절반에 대한 업데이트 수가 너무 많음) 계층 구조 테이블을 left 두어야합니다. right , IDParentID 약 1.2 GB 테이블 초래 열. 그러나 그것은 적어도 2 년의 사용 후에 당신의 최고 추정치입니다.

나의 제안

빠르게 움직여야하고 가벼워야합니다. 결국 최상위 데이터베이스를 사용하여 계층 구조를 저장하면 결국 필요하지 않게됩니다. 따라서 처음에는 관계형 DB를 사용하는 것이 좋을 것입니다. 솔루션이 수백만 건의 레코드를 처리 한 후에도 어려움을 겪을지라도 신속하게 시장에 나설 수 있습니다. 그러나 데이터베이스가 어려워지기 전에 (여기서 우리는 몇 년 동안 이야기하고 있습니다) 두 가지를 얻을 것입니다.

  1. 당신은 당신의 제품이 처음부터 이륙 할지를 볼 것입니다. 이미 많은 계보 서비스가 있습니다. 그래서 당신은 새로운 기술을 배우는데 투자하지 않을 것입니다; 입증되고 지원되는 기술을 사용하면 신속하게 시장에 진출 할 수 있습니다.
  2. 귀하의 제품이 성공한다면 (그리고 진정으로 그렇게되기를 희망합니다), 다른 스토리지 솔루션을 배우고 구현할 수있는 충분한 시간을 가질 것입니다. 적절한 코드 레이어를 사용하면 나중에 필요할 때 스토리지를 전환하기가 어려워서는 안됩니다.


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow