문제

대규모 데이터베이스를 채굴하는 프로젝트가 있습니다. 현재 모든 데이터를 텍스트 파일에 저장하고 있으며 대신 데이터 관계형 데이터베이스를 저장하는 데 드는 비용과 이점을 이해하려고합니다. 포인트는 다음과 같습니다.

CREATE TABLE data (
    source1 CHAR(5),
    source2 CHAR(5),
    idx11   INT,
    idx12   INT,
    idx21   INT,
    idx22   INT,
    point1  FLOAT,
    point2  FLOAT
);

합리적인 성능으로 이와 같은 포인트는 몇 점입니까? 나는 현재 ~ 1 억 5 천만 건의 데이터 포인트를 가지고 있으며 아마도 3 억 명을 넘지 않을 것입니다. 4 개의 듀얼 코어 2GHz Xeon CPU와 8GB RAM이있는 상자를 사용하고 있다고 가정합니다.

도움이 되었습니까?

해결책

MySQL은 Alex의 PostgreSQL에 대한 제안뿐만 아니라 귀하의 요구를 제공 할 수있는 능력 이상입니다. 합리적인 성능을 달성하기가 어렵지 않아야하지만 테이블에 많은 액세스가 발생하고 많은 양의 DML을 갖는 경우 선택하게하는 데이터베이스에서 사용하는 잠금에 대해 더 많이 알고 싶을 것입니다.

PostgreSQL은 상자 밖에서 줄 레벨 잠금을 사용할 수 있다고 생각합니다. 여기서 MySQL은 선택한 저장 엔진에 따라 다릅니다. MyISAM은 테이블 레벨에서만 잠그므로 동시성이 어려워 지지만 MySQL 용 InnoDB와 같은 스토리지 엔진은 행 수준 잠금을 사용하여 처리량을 늘릴 수 있습니다. 내 제안은 Myisam으로 시작하여 행 레벨 잠금이 필요하다고 생각하는 경우에만 Innodb로 이동하는 것입니다. Myisam은 대부분의 상황에서 잘 작동하며 매우 가벼운 가중치입니다. MyISAM을 사용하여 MySQL에 10 억 행 이상의 테이블을 가지고 있으며 좋은 인덱싱 및 파티셔닝을 통해 훌륭한 성능을 얻을 수 있습니다. MySQL에서 스토리지 엔진에 대한 자세한 내용을 읽을 수 있습니다.MySQL 저장 엔진 그리고 테이블 파티셔닝에 대해 테이블 파티셔닝. 여기에 관한 기사가 있습니다 실제로 113m 줄의 테이블에있는 파티션 당신도 유용하다고 생각할 수 있습니다.

관계형 데이터베이스에 데이터를 저장하면 이점이 비용보다 훨씬 높다고 생각합니다. 데이터가 데이터베이스 내에 있으면 할 수있는 일이 너무 많습니다. 시간 복구, 데이터 무결성 보장, 더 미세한 보안 액세스, 데이터 분할, 공통 언어를 통해 다른 응용 프로그램에 대한 가용성 (SQL) 등

프로젝트에 행운을 빕니다.

다른 팁

PostgreSQL 테이블 당 최대 32 개의 테라 바이트 등의 데이터를 충분히 수용 할 수 있어야합니다. 올바르게 이해하면 현재 5GB, 10GB 최대 (약 36 바이트/행 및 최대 3 억 행까지 이야기하고 있습니다. ), 거의 모든 데이터베이스는 실제로 쉽게 당신을 수용 할 수 있어야합니다.

참고 : Postgres는 다중 프로세서 / 중첩 요청에서 MySQL보다 더 잘 늘어납니다.

나는 당신의 프로파일에서 이것이 일종의 생체 인식 (코돈 서열, 효소 대 단백질 아미노산 서열 또는 일부) 문제라고 가정합니다. 동시 요청으로 이것을 공격하려는 경우 Postgres와 함께 갈 것입니다.

OTOH, 데이터가 한 번로드된다면 단일 스레드로 스캔하면 "ACID NOT NOT NORD"모드의 MySQL이 가장 잘 일치 할 수 있습니다.

"최고의"스택을 선택하기 전에 액세스 사용 사례의 경우에 할 계획이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top