2011-07-26 2 views
2

저는 1-2 백만 명의 사용자 기반으로 VB.NET에서 소셜 네트워킹 응용 프로그램을 작성하고 있습니다.소셜 네트워킹 웹 사이트 - 메모리에 '사용자 검색'을 구현하는 가장 좋은 방법은 무엇입니까 (SQL 없음)?

모든 사용자 데이터는 국가, 지역, 연령 등의 속성이 표시된 '사용자'개체 사전에 메모리에 저장됩니다. 메모리의 여러 사용자 속성에 대해 검색을 수행해야합니다. SQL을 사용하지 않습니다.

여러 속성에 대해 '사용자 검색'을 구현하는 가장 좋은 방법은 무엇입니까?

정보 나는 현재 (비 검색) 대부분의 조회가 사용자 ID를 통해 수있는 바와 같이, 괜찮 사전의 키와 같은 사용자 ID를 사용하고 추가. 여러 사전을 키로 다른 사용자 속성을 사용하는 색인으로 사용하는 것을 고려하고 있습니까? 나는 모든 사용자의 철저한 반복 검색을 피하려고 정말로 노력하고 있습니다.

답변

1

아마도 LINQ to Objects이지만, 특히 User 개체의 속성을 변경할 수있는 경우 백만 명이 넘는 사용자를 계획하는 경우 여러 사전 목록을 사용하게됩니다. 예를 들어 UserName이 A로 시작하는 사용자는 하나의 목록으로 가고 B-C는 다른 목록으로 이동합니다.

+0

Dictionary의 HashTable 구현이 성능 문제없이 1M 항목을 처리한다는 인상을 받았습니까? 어쨌든 검색 문제를 제쳐두고이 사실을 좀 더 조사해야 할 수도 있습니다. – Satellite

+0

너무 많은 잠금을 유발하는 일부 공유 메모리에서 많은 업데이트를 만들려고 할 때 성능 문제가 발생할 것이라고 생각합니다. 그것을 분리하면 업데이트가 완료 될 때 전체 사용자 목록을 잠글 필요가 없습니다. – N0Alias

+0

설명해 주셔서 감사합니다. 그것은 꽤 'write-light'응용 프로그램이지만, 이것은 실제로 문제가 될 수 있습니다. – Satellite

관련 문제