.NET으로 온라인 상태가 아닌 ebanking 트랜잭션을 수집하는 프로젝트를 개발 중입니다. 전날 거래가 들어있는 텍스트 파일을 얻게 될 것입니다. 전체적으로 이것은 하루에 약 2,000,000 행을 포함합니다.SQL Server 2008에서 보관 된 엄청난 양의 레코드로 작업 할 때 가장 좋은 솔루션은 무엇입니까?
지난 달 트랜잭션 (최대 3 초)에서 검색하는 데 좋은 성능을 원하지만 이전 트랜잭션 (최대 30 초)에서 검색 할 수 있기를 원합니다. 아카이브 검색은 CardNumber
, TransactionNumber
및 TransactionDate
을 기준으로합니다. 아카이브 검색 시나리오가 정적이며 다른 열을 검색하거나 모든 종류의 보고서를 얻지 않기를 바랍니다.
저는 보관 전략을 생각하고 있습니다. 기본 테이블에
튜닝과 최적화 인덱스 :
몇 가지 옵션이 있습니다.
주 테이블을 분할하는 중입니다.
이전 트랜잭션을 야간에 다른 데이터베이스로 이동합니다.
오래된 트랜잭션을 매 시간 (TextFile, XmlSerialization, BinarySerialization)으로 이동 한 다음 메모리에서 검색합니다.
다른 오픈 소스 NON-RDBMS 데이터베이스 (텍스트 검색에서 Lucene 엔진과 같은)를 사용합니다.
우선이 시나리오에서 어떤 전략이 가장 적합한 지 알고 싶습니다.
또한 SQL Server 2008, Oracle, Sqlite, MySql 등과 같이 알려진 데이터베이스 엔진에서 지원하는 레코드 수는 얼마나됩니까? Table Partitioning은 언제 생각해야합니까?
지원되는 행 수는 실제로 선택한 엔진의 요소가되지 않습니다. 행이 차지하는 공간의 양을 제외하고는 이론적 인 제한이 없습니다. 우리가 거물 (오라클, DB2, SQL 서버)에 대해 이야기 할 때 이것은 테이블 디자인, 아키텍처 및 하드웨어의 요소가 될 것입니다. 그 자체만으로 전환하는 것은 마술처럼 더 많은 행을 저장할 수있는 능력을 향상시킵니다. SqLite 또는 MySQL과 관련하여 많은 대용량 성공 사례를들은 적은 없지만 이들이 존재할 수도 있습니다. –