복붙노트

[REDIS] 가장 많은 시간 효율적인 방법으로 직렬화 / 역 직렬화 DataTable을에 / 레디 스에서 무엇입니까?

REDIS

가장 많은 시간 효율적인 방법으로 직렬화 / 역 직렬화 DataTable을에 / 레디 스에서 무엇입니까?

나는 레디 스에서 등등 DataTable을 또는 데이터 집합, 같은 복잡한 객체를 저장할. 나는 JsonSerialize를 사용하여 BLOB 객체로 직렬화하는 것을 시도했다, 그러나 너무 많은 시간이 걸립니다. 다른 방법이 있습니까?

해결법

  1. ==============================

    1.대용량 데이터 세트로 작업 할 때 불행하게도 항상 직렬화에 시간이 걸릴 구조를 직렬화합니다. 이 기본 테이블에있는 것처럼 보이더라도 - 그들은 종종 그들에 부착 된 메타 데이터를 많이 가지고 행과 열을 가지고 특히 DataTables은 매우 복잡한 개체입니다.

    대용량 데이터 세트로 작업 할 때 불행하게도 항상 직렬화에 시간이 걸릴 구조를 직렬화합니다. 이 기본 테이블에있는 것처럼 보이더라도 - 그들은 종종 그들에 부착 된 메타 데이터를 많이 가지고 행과 열을 가지고 특히 DataTables은 매우 복잡한 개체입니다.

    당신이 정말로 DataTable에로 직렬화 할 필요가 있는지 고려한다. 당신은 목록 을 간단한 POCO을 만들고 직렬화 수 있을까? 당신은 필드와 열을 추가 속성을 필요로하지 않으며, 당신은 간단한 형식으로 직렬화 할 수있는 경우 즉, 그것은 가능성이 더 빨리, 그리고 더 많은 공간 효율적인 캐시입니다; 필요한 경우 다음의 DataTable에 복원합니다.

    또 다른 옵션은 직렬화하고 작은 부분에서 저장하는 것이 작은 세트에 DataTable을 분할하는 것입니다. 이보다 확대됨을 찾을 수 있습니다. 당신은 벤치 마크이 할 수 있어야한다.

    궁극적으로 당신의 레디 스 캐시는 다시 쿼리 데이터 소스를 걸리는 시간에 비해 개선해야한다. 당신은 용어가 너무 많은 시간이 필요하지만이 데이터 소스를 조회 할 수 팔초 대 캐시에서 얻을 수 2 초 걸린다면 그 상당한 향상이다 사용합니다. 그러나 확신 할 수있는 유일한 방법은 벤치 마크입니다.

    당신은 대규모 데이터 세트로 작업하는 경우, 응용 프로그램 캐시 모두 충분한 메모리를 가지고 있습니까? 응용 프로그램의 메모리는 병목이 될 수있다; 당신은 작업을 수행하는 동안 시스템의 활동 모니터를보고, 당신은 메모리가 부족하고 시스템이 페이징을 수행 할 필요되지 않도록해야한다. 당신은 RAM을 늘리거나 이전에 언급 한 바와 같이 작은 데이터 세트에 DataTable을 분할하거나, 이런 일을 찾을 경우.

    같은 컴퓨터에서 네트워크를 통해 레디 스 서버에 연결하고 있지 않은 경우, 네트워크의 대기 시간을 확인 있나요? 당신은 당신의 애플리케이션 서버와 캐시 서버 사이에 ping을 실제로 낮은 핑을 확인 할 수 있습니다. 당신은 간단한 오브젝트 캐싱을 찾을 경우 특히 느립니다.

    당신이 찾는 경우 어쩌면 레디 스 좋은 적합하지 않습니다 사용, 캐시 시간을 개선하고 복원 할 방법이 없습니다. 아마도 애플리케이션 메모리 내의 정적의 DataTable을 사용하면 더욱 적합하다. 즉,하여 응용 프로그램 메모리에 캐시를 유지하고 걱정할 직렬화 및 역 직렬화가 없습니다. 물론 당신은이 작업을 수행하는 응용 프로그램에 사용할 수있는 충분한 메모리가 확보에주의해야합니다. 당신이 생각이 옵션을 선택해야한다면 나는 그러나 놀랄 것입니다.

    당신이 그것을 구축하고 서비스의 데이터 집합이나 지식을 보지 않고 궁극적으로 최선을 문제의 원인을 좁힐 방법에 대한 유일한 일반적인 조언이다. 중요한 조언의 IS는 병목 현상을 확인하기 위해 각 작업을 간단한 구조 할 것입니다 경우의 DataTable을 사용하고, 벤치 마크하지 않습니다.

    이게 도움이 되길 바란다.

  2. from https://stackoverflow.com/questions/20898534/what-is-the-most-time-efficient-way-to-serialize-deserialize-a-datatable-to-from by cc-by-sa and MIT license