C # 최소 SQL 데이터베이스


12

CSV와 같은 것이 처리하기에 비효율적이며 SQL / MySQL 서버가 너무 많을 정도로 충분한 데이터를 저장해야하는 소규모 프로젝트 (생산 아님)를 작업하고 있습니다. .Net은 단일 파일을로드하고 처리하는 대신 서버를 관리하고 연결하지 않고도 쿼리 할 수있는 기능을 통해 여러 데이터 항목을 효율적으로 저장할 수있는 방법이 있습니다.


이미 데이터베이스 서버가 설치되어 있고 다른 데이터베이스를 만드는 중이라면 아주 사소한 것입니다. 데이터 만 사용하는 경우 액세스를 고려할 수 있습니다.
Brad

@ Brad 이것은 개인 프로젝트 일 뿐이며 현재 집에서 데이터베이스 서버를 운영하지 않습니다. Access에 대한 귀하의 제안은 내가 찾고있는 것입니다.
David

4
액세스의 팬이 아니다 , 그러나 나는 때때로 수도 적합한 솔루션을 부여 할 수 있습니다. 객체 직렬화 를 고려 했습니까 ? 객체를 만들고 파일에 쓰십시오. (객체는 가능 List<foo>)
Dan Pichelman

이것들이 지속되기를 원합니까 아니면 메모리에 있어야만합니까?
Richard

1
@David : 4000 개 항목-너무 적습니까? 그것들을 모두 메모리에 담아 두지 않겠습니까? 관리 도구없이 일부 쿼리를 수행하기 위해 인 메모리 데이터베이스가 필요한 경우 일부 데이터 테이블이있는 (파일에 대한) 데이터 세트로 충분할 수 있습니다.
Doc Brown

답변:


15

특별한 순서없이 몇 가지 대안이 있습니다.

  1. 모든 유료 (유료) Visual Studio 버전에는 SQL Server Express가 설치되어 있습니다. 사용할 수 있습니다.
  2. (Ugh) XML 파일
  3. SQL Server CE (기본적으로 파일을 통한 로컬 SQL)
  4. SQLite

여기에 더 많은 아이디어가 있습니다 : https : //.com/questions/3639846/what-is-a-good-embedded-database-to-use-with-c


하나의 실행 파일, DLL 및 타사 소프트웨어에 완전히 포함 된 무언가를 정말로 원합니다. XML을 제외하고 위의 요구 사항에 이러한 요구 사항을 충족 할 수 있습니까?
David

실행 파일에 dll을 포함시킬 수 있습니다.
Sklivvz

가장 중요한 부분은 MSSQL / MySQL과 같은 타사 서비스가 # 3 또는 # 4에 맞지 않는다는 것입니다
David

SQL CE에 별도의 런타임이 있는지 여부는 기억 나지 않습니다. SQLite는 그렇지 않지만 .NET 프로젝트로 설정하는 것은 약간 까다로울 수 있습니다.
GalacticCowboy

3
LocalDB는 옵션이라고 덧붙입니다. 이 답변보기 : stackoverflow.com/questions/9655362/…
Andy

4

Sklivvz가 제공하는 옵션 외에도 SQL 영역 외부를 탐험하고 Sterling 또는 DB4O 와 같은 임베디드 객체 지향 데이터베이스 엔진을 사용하는 것을 두려워하지 마십시오 .

작고 파일 기반이며 응용 프로그램에 포함 할 수있는 장점을 제공하지만 프로그래밍이 매우 빠르고 쉽습니다.


3

SQLite 가 최선의 선택입니다.
그들의 사이트에 쓰여진대로 :

SQLite는 자체 포함 된 서버리스 구성없는 트랜잭션 SQL 데이터베이스 엔진을 구현하는 소프트웨어 라이브러리입니다.

정말 당신이 찾고있는 것 같습니다!

너무 게으 르면 직접 다운로드하여 설치할 수없는 경우 에도 Chocolatey 패키지 가 있습니다!


2

ADO.NET은 XML로 직렬화 할 수 있으며 RDBMS의 거의 모든 기능을 갖추고 있습니다. (어쨌든 싼 것들.)

나는 그것이 "오래된"것이라는 것을 안다. 그러나 지금 내려다 보았지만 ADO.NET은 당신이 묘사 한 것과 정확히 일치합니다. 커밋되지 않은 변경 사항을 추적하는 것도 괜찮습니다.

"오래된"것일 수도 있지만 "파열 된"것은 아닙니다. 그러나 메모리 공간이 상당히 큽니다. 4000 개의 레코드는 문제가되지 않습니다.


"무거운 메모리 공간"에 대해 자세히 설명해 주시겠습니까?
David

@David-쿼리에서 반환하는 레코드뿐만 아니라 전체 데이터 세트가 메모리에 보관됨을 의미합니다. 4 백만 레코드의 데이터베이스가있는 경우 ADO.NET 데이터 세트에 모두 보유하면 리소스가 크게 소모되는 반면 "실제"RDBMS는 하위 세트를 쿼리 할 때까지 디스크에 보유합니다. 4000 레코드는 메모리 사용량의 작은 재채기이므로 걱정하지 않아도됩니다.
웨슬리 롱

+1, 이것이 최선의 선택이라고 생각합니다. SQLlite가 많은 노력을 기울이는 것처럼 작은 요구 사항도 있습니다.
Doc Brown
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.