2009-12-19 6 views
3

월드 오브 워크래프트에서 RAWR과 비슷한 종류의 백과 사전 프로그램을 만들고 있습니다. 나는 SQL 데이터베이스의 데이터를 저장하지 않을 것이지만,이 라이터 케이스 사용을위한 대안이 있다고 확신 할 때 항상 이것을하기 위해 열심히 조건을 정했습니다.SQL 데이터베이스에 데이터를 저장하지 않을 경우 어디에서 저장해야합니까?

예를 들어, 내 프로그램에는 사용자 입력을 통한 새 데이터 생성이나 사용자 입력을 통한 데이터 삭제가 없습니다. 내가 코딩 한 정보를 표시하는 프로그램. 아무것도 더, 아무것도 덜.

어디에서 이러한 것들을 저장해야합니까? 저장한다는 것은 프로그램을 배포 할 때 배포 용으로 저장한다는 의미입니다. 내가 주로거야

은 문자열 변수 및 일부 동영상/애니메이션 (see my other question) SO 도움을

감사를 저장합니다. 언제나처럼, 너 락!

+1

@Joel, 쿼리 기능이 필요하지 않고 이진 데이터가 많으며 데스크톱 응용 프로그램을 작성하는 이유는 무엇입니까? 왜 데이터베이스를 사용합니까? – Ash

답변

3

좋은 오래된 파일 시스템에는 어떤 문제가 있습니까?

응용 프로그램 폴더 아래에 하위 폴더를 만들고 응용 프로그램 폴더와 관련된 경로를 사용하여이 하위 폴더 내의 파일을 항상 참조합니다. 예.

string imagePath=Path.Combine(Environment.CurrentDirectory,"SubFolderName\\picture.jpg"); 

내가 SQLite는 나 자신을 사용하고 사랑하지만 당신은 당신이 많은 쿼리 작업을 수행 할 필요가 말을하지 않는 경우에도 그것은 당신의 요구에 과잉 될 수있다했습니다.

또한 SQL Server/SQLite와 같은 관계형 데이터베이스는 이진 데이터를 저장하는 데 실제로 이상적이지 않습니다. 그들은 확실히 할 수 있지만, 스케일링 문제에 부딪 힐 수 있기 때문에 최선을 다하지는 않습니다.

이미지, 음악, 비디오 등의 바이너리 파일이 많은 경우 파일 시스템이 가장 먼저 선택됩니다.

배포는 필요한 모든 리소스 파일을 하위 폴더에 넣은 다음 응용 프로그램 폴더에 하위 폴더를 배치하는 것처럼 간단합니다.

다른 옵션은 파일을 포함 된 어셈블리 리소스로 저장하는 것입니다. 이것은 주요 응용 프로그램 실행 파일 또는 큰 파일이있는 경우 별도의 dll 어셈블리에있을 수 있습니다. 사용자가 파일을 추가하거나 삭제하지 않기 때문에 가능한 옵션입니다.

0

xml 또는 이진 파일 중 하나가 제 제안입니다.

5

정적 데이터의 데이터베이스에 어떤 문제가 있습니까? 정적 인 데이터는 없습니다. DB를 사용하면 데이터 패키지를 작성하기위한 관리/디자인 프로그램이 데이터베이스에서 사용하면 훨씬 쉬울 것입니다. 플랫 파일에 저장하는 경우 실제로 데이터를 찾는 방법을 결정하는 쿼리 논리를 작성하거나 간단한 SQL 쿼리를 발행하고 싶습니까?

System.Data.Sqlite을 사용하면 서버 프로세스가없는 단일 데이터 파일 인 내장 데이터베이스를 사용할 수 있습니다. 이것은 매우 인기있는 데이터베이스입니다. 나는 당신이 매일 그것과 상호 작용할 수 있기를 기꺼이 원할 것입니다. 또한 Visual Studio의 모든 RAD 기능을 사용하여 데이터를 디자인하고 상호 작용할 수 있습니다.

+0

당신은 내 좋은 사람을 팔아 버렸습니다. 그러나 Sqlite를 사용한 적이 없기 때문에 실패하면, 도움을 청합니다. : D 다시 한번 감사드립니다! : D –

+0

Josh, 이것을 사용하는 방법에 대한 초보자 안내서를 공유 할 수 있습니까? 나는 무엇을 google을 위해 생각을 가지고있다. –

+0

SQLite는 데이터베이스이며 System.Data.Sqlite는이를위한 ADO.NET 공급자입니다. 따라서 다른 ADO.NET 공급자와 같은 방식으로 또는 원하는 ORM을 통해 사용할 수 있습니다. System.Data.Sqlite에는 VS2008 Server Explorer에 통합되는 기본 GUI 데이터베이스 편집기가 포함되어 있습니다. 튜토리얼이 필요한 것이 있습니까? 별도의 질문으로 제기 할 가치가 있다면? – itowlson

2

내 대답은 당신이 말하는 데이터의 양에 달려 있습니다. 순수한 디자인 관점에서 보면 항상 애플리케이션 로직과 데이터를 분리해야합니다. 따라서 외부 데이터 파일이 필요합니다. 그러나 실제로 많은 양의 데이터가없고 상대적으로 정적 인 경우 XML 파일에 넣고 XML에 Linq를 사용하여 데이터를 쿼리 할 수 ​​있습니다. XDocument class을 살펴보십시오.

데이터베이스는 일반적으로 관계형 매핑 도구 또는 객체 데이터베이스에 대한 좋은 객체를 얻는 경우 일반적으로 사용자의 삶을 편하게 만듭니다. SubSonic SimpleRepository과 같은 것을 사용하여 데이터를 SQLite database에 넣는 것이 좋습니다. 또는 pure object database like DB4O을 사용해보세요.

+0

+1 나는 논리와 데이터가 항상 분리되어야한다고 동의한다. 삶을 편하게 만듭니다. –

0

필자의 생각은 XML (선호) 또는 Mark Ewer와 같은 바이너리이며 yetapb가 제안했다. SQLLite 제안은 꽤 좋게 들립니다.

다른 옵션은 OleDb 공급자를 사용하는 Excel 스프레드 시트입니다. SQL 문을 사용하여 데이터를 읽고 씁니다. Excel 경로를 사용하는 경우 익숙해지기 몇 가지 단점이 있음을 알아 두십시오. 1) 참조하는 통합 문서의 시트를 지정하는 방법 (SQL + 1 달러의 테이블을 참조하는 방법과 유사) 기호 및 일부 괄호). 2) 텍스트 만있는 열이 있지만 하나의 셀에 숫자가있는 경우 데이터를 약간 마사지하지 않으면 OleDb에서 예외가 발생합니다. 나는 그것이 이상하게 들린다는 것을 알고있다. 그러나 이것은 단지 머리이다.

.NET에서 Excel로 재생할 때 사용할 수있는 몇 가지 사소한 단점이 있지만 실제로는 두 번 (데이터 톤이 두 번 포함되었지만) 실제로는 두 번 수행했습니다. 나는 확실히 그것을 기업 환경에 권장하지는 않을 것이다.

파일 시스템에 멀티미디어를 저장하는 것이 좋습니다. 그런 다음 SQL, Excel, XML 또는 바이너리가 파일 이름을 가리키는 지 여부에 관계없이 데이터 레코드를 보유하십시오. 데이터 관리가 훨씬 쉬워 질 것입니다.

관련 문제