언제 NoSQL로 전환합니까?
저는 과거 가격 데이터를 수집하는 대규모 데이터베이스를 취급하고 있습니다.스키마는 비교적 단순하며 변경되지 않습니다.
예를 들어 다음과 같습니다.
SKU(char), type(enum), price(double), datetime(datetime)
문제는 이 테이블이 현재 500,000,000개 이상의 행을 가지고 있으며 약 20GB 이상 증가한다는 것입니다.이미 쿼리 실행이 다소 어려워지고 있습니다.일반적인 질문 중 하나는 500,000개의 레코드로 구성된 특정 날짜 범위에서 모든 skus를 가져오는 것입니다.그룹화 등의 복잡성을 더하면 잊어버릴 수 있습니다.
이 DB는 대부분 쓰기입니다.하지만 데이터를 정밀하게 분석하고 가끔 쿼리를 실행해야 합니다.더 나은 인덱스 계획이 질의 속도를 높일 수 있다는 것은 이해하지만, 이것이 MongoDB와 같은 noSQL 솔루션의 이점을 얻을 수 있는 데이터 유형인지 궁금합니다.mysql(아마 MariaDB로 이행)이 100~200GB 이상 커진 후에도 계속 기능할 수 있을까요?아니면 상황이 나빠지기 전에 대안을 모색해야 할까요?
NoSQL은 "대규모 데이터베이스" 문제에 대한 해결책이 아닙니다. NoSQL은 저장하는 데이터의 특성이 다른 시나리오를 위해 설계되었기 때문에 처음부터 엄격한 스키마와 관계를 정의하고 싶지 않습니다.
당신이 가지고 있는 것은 단순하고 명확한 데이터입니다.이는 관계형 데이터베이스에 이상적이지만, 이와 같은 규모의 데이터베이스에서는 상용 제품(플랫폼에 따라 SQL Server 또는 Oracle)을 찾는 것이 좋습니다.SQL Server에서 작업하는 데이터베이스의 크기는 약 4테라바이트이며, 귀하처럼 수억 개의 레코드에 여러 개의 테이블이 포함되어 있습니다.관계형 데이터베이스는 귀하가 개략적으로 설명한 간단한 데이터를 쉽게 수용할 수 있습니다.
실제로 SQL에 이상적인 사용 사례가 있고 NoSQL에는 적합하지 않습니다.MySQL devs는 5백만 개의 레코드의 데이터베이스를 사용하는 사용자를 보고합니다.일부 다른 SQL 서버는 이보다 더 확장성이 뛰어납니다.그러나 적절한 인덱스를 지원하지 않으면 그 일부를 관리하는 것은 불가능할 것입니다.
참고로, 인덱스를 포함한 테이블 스키마는 무엇입니까?
mariadb로 전환하고 스파이더 엔진을 사용할 수 있습니다.스파이더 엔진을 사용하면 기존 인스턴스에 대해 쿼리를 실행하는 기능을 잃지 않고 데이터를 여러 mariadb 인스턴스로 분할할 수 있습니다.
따라서 파티션에 대한 자체 규칙을 정의한 다음 파티션당 인스턴스를 하나씩 생성할 수 있습니다.결국 mariadb의 인스턴스가 여러 개 있지만 모든 레코드는 스파이더 엔진과 함께 한 테이블에 가상으로 보관됩니다.
여러 인스턴스로 데이터를 분할하여 테이블 또는 인스턴스당 레코드의 양을 줄이고 하드웨어 리소스를 더 많이 사용하기 때문에 성능이 향상됩니다.
언급URL : https://stackoverflow.com/questions/28080952/when-is-it-time-to-switch-to-nosql
'programing' 카테고리의 다른 글
하위 배열 값을 사용하여 PHP 배열을 알파벳 순으로 정렬합니다. (0) | 2022.09.27 |
---|---|
instanceOf(클래스)와 같은 것이 있습니까?instanceOf(클래스)와 같은 것이 있습니까?c) 자바어?c) 자바어? (0) | 2022.09.27 |
MySQL/MariaDB가 utf8mb4를 사용할 때 고유 키를 처리할 수 없음 (0) | 2022.09.27 |
존재하지 않는 코드 오류 - 마리아DB (0) | 2022.09.27 |
런타임에 위치 권한을 요청하는 방법 (0) | 2022.09.27 |