2014-01-16 3 views
0

데이터베이스에 액세스하지 않고 C#을 사용하여 많은 양의 데이터를 메모리에서 관리하는 가장 좋은 방법을 찾으려고합니다. (db는 최종 정보가 될 때이 정보의 일부만 저장하는 데 사용됩니다.)많은 양의 데이터를 메모리에서 관리하는 가장 좋은 방법은 무엇입니까?

"대용량 데이터"라고하면 수백 메가 바이트를 말하는 것이지 복잡한 구조를 관리하고 싶습니다. 수백만 개의 레코드가있는 테이블과 같은 것일뿐입니다.

최대한 빨리 검색해야하며 쓸모없는 부분을 제거해야합니다.

다행스럽게도이 데이터를 어떤 방식 으로든 관련시킬 필요가없는 그룹으로 나눌 수 있습니다 ... 그래서 수백만 사이의 행을 찾거나 업데이트 할 필요가 없습니다. 이 그룹의 데이터를 50,000 개 더 검색하고 추가 및 제거하고 모든 그룹을 삭제합니다.

저는 이미 메모리에서 데이터를 관리하는 프로젝트를 가지고 있지만 너무 거대하지는 않습니다. 따라서이 방법이이 상황에서도 적용 가능한지 모르겠습니다. - .Net 캐시 개체를 사용했지만 더 많은 작업을하지 못했습니다. 10 또는 20 메가 바이트 -private static 목록 데이터 = 새 목록(); 여기에 xml 형식의 데이터 그룹이 저장되어 있었지만 몇 메가 바이트 이상의 데이터로 작업하지 못했습니다. 그룹에 대해 하나의 개체가 있고이 마지막 경우에는 10MB가 넘는 작업을하지 못했습니다. 데이터 테이블이 스레드 안전하지 않기 때문에 액세스

이러한 상황을 관리하는 가장 좋은 방법은 무엇일까요? 나에게 문제를 일으킬 수있는 Windows 또는 .Net 프레임 워크에는 제한이 있습니다.

+0

이것은 복잡한 작업입니다. 코드를 직접 작성할 필요가 없다면이 기능을 제공 할 수있는 기존의 메모리 내장 데이터베이스를 살펴 봐야한다고 생각합니다. –

+0

특정 항목을 쓸 필요가 없습니다. 믿을만한 제품을 발견했다면 ... 메모리 데이터베이스에 좋은 아이디어가 있습니다. 적어도 고려해야 할 사항입니다. 나는 그 중 일부는 약간 비싸고, 다른 것은 무료이지만 수년간 베타 버전으로 보았다. 나는 또한 SqLite가 메모리에서 작동 할 수 있다는 것을 알았습니다. 아마 나를위한 좋은 해결책이 될 수 있습니다. – user3202167

답변

0

메모리를 사용하여 데이터를 데이터 구조에 저장하고 데이터로 재생하는 것이 좋습니다. 동일한 서버에서 실행되는 다른 응용 프로그램에서는 메모리를 사용할 수 없게됩니다. 또한 메모리에서 디스크/DB로 데이터를 커밋하려고하면 큰 데이터를 취하는 데 더 많은 시간이 걸립니다.

데이터에 따라 구조를 정의해야합니다. 데이터가 서로 관련되지 않은 경우 각 엔터티마다 다른 개체를 만들어야합니다.

또한 캐시를 업/새로 고치기위한 전략을 수립해야합니다. 시간당, 매일, 매주 일 수 있습니다. 당신의 필요에 따라.

관련 문제