수개 국어 문제:’올바른’데이터베이스의 역설 해결

(레제크 글라스너는/)

2011 년에 처음 도입 된 수개 국어 지속성은 이제 거의 정경 법입니다. 그래서,내가 말해야하는 것은 신성 모독으로 건너 올 수 있습니다.

오늘날 대부분의 조직에서는 데이터를 쿼리,분석 및 배포하는 다양한 방법을 기반으로 다양한 데이터 스토리지 기술을 배포하는 수개 국어 지속성 개념을 채택했습니다. 또한 키/값,그래프,시계열 및 데이터 저장소의 성장과 보급은 개발자들에게 올바른 작업에 적합한 데이터 도구를 선택할 수있는 풍부한 선택을 제공했습니다.

그러나 개발자로서 우리에 대한 요구는 빠르게 진화했으며,나는 수개 국어 지속성이 빠르게 속도를 유지하기 위해 투쟁 할 것이라고 믿는다. 또는,어쩌면,그것은 이미 당신이 오늘 직면하고있는 현실입니다. 왜? 우리가 가진 작업은 어려운 및 개발 팀은 이미 얇은 뻗어 있기 때문에.

데이터베이스 다양성

우리는 각각 고유 한 쿼리 언어를 가진 광범위한 데이터베이스 기술의 전문가가되어야합니다. 우리는 점점 더 많은 사용 사례에 걸쳐 효율적인 결과를 제공하기 위해 응용 프로그램이 필요합니다. 그리고 우리는 다양한 데이터 모델과 배포가 필요한 수천 개의 다양한 데이터 기반 응용 프로그램으로 성장하는 수백 가지를 구축하고 관리하도록 요청 받았습니다. 또 다른 기술이나 쿼리 언어를 마스터하고 유지하는 것을 상상할 수 있습니까? 약 5 개 더? 열 개 더?

소프트웨어는 세계를 먹고,우리의 개발 노력은 증가 할 것이며,여러 데이터 스토어를 통합하는 데 드는 시간과 비용은지지 할 수 없으며 개발자는 유한 한 데이터베이스 기술에 집중해야합니다.

더 중요한 것은 사용 사례가 정교하게 성장하고 있으며 데이터에 대해 묻는 것은 여러 데이터 모델의 사용을 필요로 할 것입니다. 쿼리를 계산하기 위해 응용 프로그램 코드에 해결 방법을 작성하는 것은 지속 가능하거나 확장 가능하지 않습니다. 이제 조직들이 기술 포트폴리오를 단순화하고 적절한 작업에 적합한 데이터 모델을 선택할 수 있는 유연성을 가질 수 있는 하이브리드 접근 방식을 모색할 때가 되었다고 생각합니다.

데이터 모델 탐색

어떤 데이터 모델이 서로 다른 용도로 잘 작동하고 이러한 모델을 어떻게 결합 할 수 있는지 이해하는 것이 도움이된다는 것을 알았습니다.

제이슨 문서 데이터베이스

제이슨은 비정형 및 구조화 된 데이터에 매우 다양합니다. 하위 문서 및 가변 길이 목록을 포함할 수 있습니다. 최신 데이터 저장소는 데이터를 압축하는 데 매우 효율적이어서 관계형 데이터베이스에 비해 메모리 오버헤드가 없습니다. 구조화된 데이터의 경우 필요에 따라 스키마 유효성 검사를 구현할 수 있습니다.

그래프 데이터베이스

그래프 데이터베이스는 관계에 대한 좋은 데이터 모델입니다. 많은 실제 사례에서 그래프는 매우 자연스러운 데이터 모델입니다. 관계를 캡처하고 각 가장자리 및 각 꼭지점에 레이블 정보를 저장할 수 있습니다. 이 유형의 꼭짓점 및 가장자리 데이터를 저장하는 데 적합합니다.

그래프 데이터베이스는 특히”그래프”쿼리에 적합합니다. 여기서 중요한 것은 쿼리 언어가”최단 경로”및”그래프 순회”와 같은 루틴을 구현해야한다는 것입니다.이 기본 기능은 정점의 모든 발신 또는 수신 가장자리 목록에 빠르게 액세스하는 것입니다.

다중 모델 데이터베이스

다중 모델 데이터베이스는 문서,키/값 및 그래프 데이터베이스의 기능을 결합합니다. 그것은 당신이 적은 운영 오버 헤드와 다른 데이터 모델을 선택할 수 있습니다. 단일 데이터베이스 엔진에서 여러 데이터 모델을 사용할 수 있으면 운영 오버헤드가 적고 데이터 동기화가 적기 때문에 데이터 모델링 유연성이 크게 향상되므로 서로 다른 데이터 모델을 동시에 사용할 수 있는 몇 가지 문제가 완화됩니다.

다른 데이터 모델이 필요한 경우에도 관련 데이터를 동일한 데이터 저장소에 함께 보관할 수 있는 옵션이 갑자기 나타납니다. 단일 쿼리 내에서 서로 다른 데이터 모델을 혼합할 수 있으면 응용 프로그램 디자인 및 성능 최적화에 대한 옵션이 늘어납니다. 지속성 계층을 여러 다른 데이터베이스 인스턴스로 분할하도록 선택하는 경우(동일한 데이터 모델을 사용하는 경우에도)단일 기술만 배포하면 됩니다. 또한 데이터 모델 잠금이 방지됩니다.

수개 국어 솔루션

수개 국어 지속성은 하나의 모 놀리 식 데이터베이스 기술에 대한 손상을 피할 수 있었기 때문에 받아 들여졌습니다. 우리는 클러스터가 점점 더 커짐에 따라 수개 국어 지속성이 복잡성,성능 비용 및 일관성 및 가용성에 대한 비용으로 발생한다는 것을 이해했습니다. 그러나 전부는 아니더라도 대부분의 데이터 모델 유연성의 이점은 단일 데이터베이스가 모든 또는 대부분의 요구 사항 및 사용 사례를 해결하기 위해 존재하지 않으며 존재하지 않기 때문에 이러한 비용보다 훨씬 큽니다.

오늘날 우리는 비용없이 수개 국어 지속성의 이점이 필요하다는 것이 분명합니다. 수평적으로 확장되고 다양한 데이터 모델을 활용하는 고성능 애플리케이션을 구축할 수 있는 유연성이 필요합니다. 기본적으로 다른 데이터 모델을 통해 쿼리 할 수있는 쿼리 언어가 필요합니다. 우리는 우리의 프로젝트가 필연적으로 진화로 우리에게 독특한 방식으로 다른 데이터 모델을 사용할 수있는 자유와 유연성을 제공하기 위해 데이터베이스가 필요합니다.많은 고급 조직에서는 프로젝트의 한 부분에 작은 그래프 데이터베이스를 사용하거나 다른 부분에 큰 키/값 배포를 사용하거나 다른 부분에 그래프,키/값 및 문서 모델의 조합을 사용하는 것이 이미 일반적입니다.

데이터 다양성

여러 항공기로 구성된 항공기 함대에 대한 복잡한 데이터 세트를 고려하십시오.”

최적의 차량 유지 보수를 위해 조직은 다양한 계층 구조 수준에서 다양한 데이터를 저장해야합니다. 부품 또는 부품 이름,일련 번호,제조업체 정보,유지 보수 간격,유지 보수 날짜,하청 업체에 대한 정보,매뉴얼 및 문서에 대한 링크,담당자,보증 및 서비스 계약 정보 등 이러한 종류의 데이터 계층 구조는 각 가장자리와 꼭지점에 대한 정보를 포함하여 서로 다른 데이터 요소 간의 관계를 캡처하기 때문에 그래프 데이터베이스에 대한 명확한 자연스러운 적합성입니다. 그러나 그래프 데이터베이스는 함대 유지 관리 팀의 주요 쿼리에 효율적으로 응답하는 데 이상적입니까?

그래프 데이터베이스가 질문에 대해 잘 수행됩니다.: “주어진 구성 요소의 모든 부분은 무엇입니까?”그리고 질문에 대답 할 수 있습니다:”깨진 부분을 감안할 때,이 부분을 포함하고있는 유지 보수 절차가있는 항공기의 가장 작은 구성 요소는 무엇입니까?”그러나 그래프 데이터베이스는”이 항공기의 어느 부분이 다음 주에 유지 보수가 필요합니까?”그래프 구조가 쿼리에 맞지 않기 때문입니다.

그러나 그래프 데이터가 임의의 데이터를 정점 및 가장자리와 연관시키는 제이슨 문서로 저장 될 수 있다면 문서 쿼리를 통해 그 질문에 쉽게 대답 할 수 있습니다.

요점은 해당 시스템의 모든 쿼리를 빠르게 수행하려면 정보를 다양한 데이터 모델로 저장할 수 있는 데이터베이스가 필요하다는 점입니다. 그래프 데이터베이스가 정점 데이터에 보조 인덱스를 구현할 수 있다면 좋지 않을까요?

그러나 본질적으로 다중 모델 데이터베이스가됩니다. 그것은 좋은 첫 걸음입니다. 이상적인 시나리오는 그래프,문서 및 키/값 데이터 모델을 모두 동시에 사용하여 먼저 유지 관리가 필요한 부품을 찾고 각각에 대해 위의 최단 경로 계산을 실행 한 다음 연락처 컬렉션으로 조인 작업을 수행하여 구체적인 연락처 정보를 추가하는 것입니다. 다른 데이터 모델에 액세스하는 것은 데이터베이스가 아닌 쿼리를 변경하는 것입니다. 그것이 우리가 가야 할 곳이며 곧 갈 것입니다.

이 함대 유지 보수 예는 고유하거나 특별하지 않습니다. 개발자들과 이야기하면서,나는 그것이 개발자가 보는 사용 사례의 증가와 다양성에 대한 좋은 아날로그라는 것을 발견했습니다. 내 관점에서,수개 국어 지속성의 기본 학습은 올바른 작업에 적합한 데이터 모델을 사용할 필요가 있다는 것입니다. 그리고 데이터베이스 기술의 혁신으로 우리는 같은 데이터베이스 엔진에 하나 이상을 가질 수 있습니다. 그렇지 않으면,우리는 수개 국어 지속성이 우리를 제한하고 결국 우리의 경쟁 뒤에 우리를 넣어 것입니다 자신의 타협 것을 인정해야합니다.

저자에 관하여: 막스 뉴회퍼는 아랑고드의 수석 개발자 겸 건축가입니다. 그의 학문적 경력에서,그는 컴퓨터 대수학의 새로운 알고리즘의 개발 및 구현에 16 년 동안 일했다. 몇 년 전,그는 데이터베이스에 초점을 옮겼습니다. 아랑곳에서 그는 쿠버네티스에서의 배포뿐만 아니라 복원력,페일오버 및 확장성을 포함하여”모든 것이 분산되어 있다”는 책임을 맡고 있다. 그의 특별한 관심사는 분산 트랜잭션,자가 치유 분산 시스템 및 성능 조정을 포함한다. 그의 일이 48 시간 있으면,그는 골프를 치고,항해하고,피아노를 치고 새로운 프로그램 언어를 발명할텐데.

태그:ArangoDB,그래프,json,키-값,멀티-모델 데이터베이스,어,어 지속성,관계형

답글 남기기

이메일 주소는 공개되지 않습니다.