2011-09-19 5 views
4

이것은 매우 기본적인 질문 일 수 있지만 엄청난 양의 데이터 저장소가 필요한 Windows Forms 기반 응용 프로그램을 만드는 과정에 있습니다. 본질적으로 수천 명의 선수가있는 수백 개의 팀이있는 스포츠 시뮬레이터가 될 것입니다.WinForms 응용 프로그램에 데이터 저장

그래서이 데이터를 저장하는 가장 좋은 방법을 찾아야합니다. 나는 대부분의 ASP.NET과 함께 일한지로 Windows Forms는 나에게 비교적 새로운이지만, 나는 다음과 같은 아이디어를 왔어요 : 직렬화를 포함

  1. 프로그램 디렉토리에 압축 SQL 데이터베이스가
  2. 파일 사물.

그 밖의 해결책이 있습니까? 또는 이들 중 어느 것을 골라야합니까?

답변

1

귀하의 요구 사항은 매우 모호 합니다만, 일반적으로 모든 종류의 영구 데이터 저장소에 대한 직렬화를 피하십시오.

데이터가 관계형 인 경우 ("팀에 플레이어가 있어야합니다"또는 "플레이어가 한 팀의 멤버 일 수 있음"과 같은 내부 구조가있는 경우) SQL Server Compact Edition과 같은 관계형 DBMS 또는 SQLite.

데이터가 관계형이 아닌 경우 RavenDB과 같은 키/값 저장소를 제안합니다.

또한 프로그램 디렉토리에 데이터를 넣지 마십시오. 그것은 사용자가 쓰기 가능하지 않을 수 있습니다. 데이터를 사용자 디렉토리에 저장하십시오.

+0

귀하의 조언에 감사드립니다. 그것은 실제로 관계형이 될 것이고, 약간의 연구가 끝나면 SQL Server Compact와 함께 갈 것입니다. SQL Server Compact에는 LINQ-to-SQL을 사용하여 보너스가 추가되었습니다. – Chris

1

데이터에 대해 쿼리를 수행해야하는 경우 독점 형식으로 직렬화하지 않을 것입니다.

사용자가 한 명이라면 JET 드라이버 인 SQLLite 또는 NoSQL을 통해 Access MDB와 같은 간단한 작업을 수행 할 수 있습니다.

동시 사용자가 여러 명이면 '서버'기반 SQL을 살펴볼 필요가 있습니다. SQL 익스프레스 (DB 크기 제한에주의 함), MySQL 등

+0

아무 것도 데이터 직렬화를 중지하고 비 직렬화 할 때 LINQ를 사용하지 않습니다. – Cipi

+1

예. 그렇지만 데이터의 다른 소비자에 대해서는 어떻습니까? SSRS, Crystal 등으로 보고서를 실행합니다. 데이터를 쿼리 할 때 어떤 종류의 성능이 필요한 경우 인덱스가 필요합니다. – StuartLC

0

.MDB Access 데이터베이스를 사용하여 데이터를 저장할 수 있습니다. 내 경험으로는 SQLite만큼 안정적이지 않습니다.

또한 양식을 닫은 후에도 이러한 데이터를 유지해야하는지 여부는 언급하지 않으셨습니까? 그렇지 않은 경우에는 메모리에있는 DataSet (또는 DataTable)을 사용하여 데이터에 신속하게 액세스 할 수 있습니다.

관련 문제