어느 시점에서는 저장하량의 구조화된 데이터로 BLOB 해가?

0

질문

우리는 실행하는 데이터베이스를 백업한 웹 응용 프로그램를 위한 데이터 분석을 기반으로 현재 C#.NET EntityFramework 하고,서버에서 주로 HTML+Javascript 프레임워크에서 클라이언트 측의(웹 기반).

우리의 응용 프로그램 정기적으로 받은 측정 X/Y 데이터 포인트에서 일괄 처리량,즉 1e6 나 이상의 업로드,사용자에 의해 또는 받는 다른 인프라가 있습니다.

현재 우리는 테이블에서 MSSQL 라 Valuesid, series_id as int; x, y, z as float. 이 테이블은 BULK INSERT 으로 가득 할 때 데이터는 클라이언트에 업로드,그리고 관련된 메타데이터에 저장됩 Series 테이블. 총 db 크기는 현재 접근 1TB,99.99%의 Values 데이터입니다.

이 접근 방식이 구현하는 간단하지만 그것은 여러 단점을 만든 그것이 복잡하고 시간이 느리게:

  • 우리는 삽입에 덩어리를 하중 초과하지 않는 IIS 프로세스는 전처리 그것은(현재 200'000 데이터 포인트는 당 덩어리)
  • IIS 프로세스 메모리 요구 사항 중에 삽입하는 거대(>1500MB200MB 의 데이터)
  • 삽입이 너무 느리게(5 백만 기록은 100MB 이>30 초 삽입도를 사용하여 대량 삽입)
  • 안을 삽입합체 테이블 잠금,즉 하나의 사용자 삽입할 수 있는 시간
  • 검색하는 데이터는 또한 매우 느리게,요청 1e6 기록을 때 10 초
  • 삭제하시리즈>1e6 기록 정기적으로 원인 시간 제한 웹 응용 프로그램 측.

데이터는 결코 부분적으로 선택되면,그래서 우리가 정말 필요 없어 그것을 가지고 있습니다. 그러나 그것은'희석한'표시하기 전에 보내는 클라이언트,즉,1e6 기록은 기본적으로,즉 99%의 사용 사례를 감소하 2000 10'000 기록하기 전에 클라이언트로 보내집니다. 이것은에 캐시 클라이언트,하지만 경우에 새로운 클라이언트 요청을 같은 설정,그것은 다시 처리. 값 테이블 또는 인덱스 series_id 는 것보다 더 많은 디스크 공간 테이블에 자체입니다.

나는지 궁금 것은 의미가 변경이 저장 형식 BLOB 저장소에서"값을"자신의 데이터 형식(CSV 또는 JSON 또는 바이너리),그리고 어쩌면-추가 열처리된'감소'한 데이터세트를 표시할 수 있는 푸시 클라이언트 없이 변경(예를 들어. JSON). 그래서 새로운 Values 테이블 형식의 것

id, series_id, data(blob), reduced_data(blob)

고 있는 것 하나만 ValueSeries 엔지 1e6 나 더 있습니다. 감소된 데이터 집합이 만들 때 한 번 업로드된 데이터를 받은 다음 표시에 사용할 때 클라이언트가 요청

나는 부분을 선택의 values ID 또는 X/Y 값,그러나 값이 없에 따라 선택 이외의 아무것도 idseries_id 그래서 이것은 현재 하지 않에 제한이 있습니다. 그래서 여기에 제 질문:

  • 이 말에는 모든? 내가 예상 생성 및 삭제의 큰 BLOB 데이터세트를 항상보다 훨씬 빠르게 생성 및 삭제 1,000,000 단일 기록합니다. 사실인가요?
  • 이진 덩어리 또는 CSV/JSON/..BLOB? 가장 간단한 방법에 대한 BLOB 저장은 물론을 만드는 거대한 CSV 또는 JSON 덩어리에 저장(아마도 gzip 으로 압축)데이터베이스에서. 사용자 지정 데이터는 바이너리 형식의 것 심지어 작은,하지만 그것이 될 수 있는 것을 변환하 JSON 하기 전에 보낸 클라이언트입니다.

나는 느낌을 추가적인 번거로움으로 오는 데이터는 바이너리 형식의 가치가 되지 않을 수도 있습니다 그것은 그것의 더 나은 gzip 으로 CSV/JSON blob 보를 발명하는 바이너리 형식입니다. 사실인가요?

는 방법에 대해 다른 단점의 덩어리가 알지 못할 수도 있습니까? 크기 제한하지 않는 것이 문제가 될, varbinary(MAX) 충분합니다. 내가 필요로 하지 않는 인덱스에서 값 내부 blob,단지에는 메타데이터(이 시리즈에서 테이블).

생각?

blob database-performance sql-server
2021-11-15 20:49:09
1

최고의 응답

1

주요 장점 중 하나는 저장하는 파일에서 Db ACID (자성,일관성,절연성,내구성)기술은에서 DBs. 이것은 우리가 안전하게 삽입하는 모든 데이터를 다른 테이블을 때 우리는 작업이다. 할 때 저장된 파일에서 DB 로 BLOB 당신이 이점을 가지고 파일을 복사할 때 다른 저장하기 때문에,BLOB 보다 더 빨리 작동 파일 시스템,그리고 당신은 쉽게 백업 파일이 있습니다. 하지만,당신의 파일에 대한 크기 각 기록보다는 더 이 10-50-100MB 는 권장하지 않음을 저장하는 파일을 합니다. 이 경우에는 기간의 레코드 삽입하여 표면을 10-15-30 초입니다. 그것은 매우 잘하기 때문에,거래를 마지막으로 이렇게 오래 중 하나,그리고 모든 동안에는 테이블 트랜잭션에서는 감각으로 차단되 당신은 알고 있고,장단의 이러한 테이블이 발생할 사용자가 될 수 없습니다. 하나의 재미있는 방법으로 저장하는 파일로 BLOB FILESTREAM BLOB 기술 지원되는 만으로 SQL Server. 더 자세한 정보를 얻을 수 있습니다 이를 위해 기술에서

2021-11-18 21:34:15

감사에 대한 포인터이다. I 벤치마킹 삽입의 여러 블록의 50 메가바이트 데이터의 예를 표에서 우리의 생산 서버와 각각했다 1~2 초 동안은 수락가능합니다. 하지만 FILESTREAM BLOB 너무 좋은 아이디어.
Jens

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................