우리는 현재 mssql 서버 기반 솔루션으로 리소스의 가장자리에서 실행 중입니다.
우리는 이제 짐을 다루기위한 다음 움직임에 관한 많은 전통적인 옵션을 가지고 있습니다 :
- 더 빠른 CPU 및 IO 구매
- 일부 고객을 분리하여 서버 분리
- DB를 클러스터로 이동
라이센스 및 하드웨어 또는 시간면에서 모두 비쌉니다. 따라서 전체 시스템을 SQL 엔진 cassandra가 약속하지 않는 확장 가능한 솔루션으로 이동하여 다른 옵션을 추가하고 싶습니다.
그러나 나는 SQL 데이터베이스에 대해 잘 모르고 경험이 없으므로 "비정형"데이터의 구조를 이해해야합니다.
애플리케이션에서 기본적으로 사용자가 입력 한 데이터를 다양한 방법으로 "키-값"목록으로 저장합니다. 주 요소와 같은 헤드 요소를 포함하는 상위 테이블이 있고 주문의 내용을 구성하는 키-값 쌍이있는 하위 테이블이 있습니다 (예 : Order_Lines).
비즈니스 측면에서 주문 및 주문 라인은 하나의 단위입니다. 그러나 RDBMS로 인해 테이블에 저장되며 항상 결합되어야합니다.
작업 중에 때때로 상단 부분 만로드하도록 선택하지만 대부분의 경우 헤드 행과 일부 KVP를로드하여 유용한 정보를 표시합니다.
예를 들어, 개요 목록에서 헤드 식별자 + 일부 값을 각 행의 열에 표시합니다.
업데이트 : 우리는 모든 종류의 양식을 저장합니다. 기본적으로 "문서"를 저장합니다. 그럼에도 불구하고, 우리는 이러한 양식을 어떤 값, 정렬 등으로도 준비하고 검색해야합니다. 데이터 액세스 제어는 데이터베이스에 또 다른 계층의 요소를 추가합니다.
짐작할 수 있듯이 특정 KVP의 양과 가용성은 개체마다 다릅니다. 서로 다른 데이터 조합에 대해 수천 개의 테이블을 작성해야하므로 각 유형의 오브젝트에 대해 단일 테이블을 작성할 수있는 유효한 가능성이 없습니다.
데이터 셋과 같은 이러한 "사전"이 noSQL 데이터베이스에 더 잘 저장됩니까? 그리고 이것으로부터 성능상의 이점이 있습니까? cassandra가이 head + KVP를 하나의 데이터 세트로 모델링 할 것입니까? cassandra 웹 페이지와 일부 자습서를 살펴보면 데이터 구성 측면에서 RDBMS와 cassandra 사이에 큰 차이가 없다는 인상을 받았습니다. 각 행의 목록.
깨달음은 환영합니다, 또한 문제를 설명하는 논문에 대한 포인터는 괜찮습니다.