2009-11-19 4 views
2

필자가 작성한이 프로그램에서는 데이터베이스 통신이 자주 필요하며 현재 XML 파일 만 사용하고있다. XML을 통해 일반적으로 MySQL이나 SQL을 사용하면 실제로 이점이 있습니까? 내가 C#을 사용하고 있음을 주목하십시오. 그래서 MySQL은 그다지 재미 있지 않습니다.C# - XML ​​대 MySQL

답변

4

관계형 데이터베이스 (귀하의 경우 Mysql) 대 XML 파일에 저장된 데이터를 유지 관리한다는 측면에서 데이터베이스는 단순한 XML 파일보다 훨씬 강력합니다. 그러나 이것은 단순히 응용 프로그램의 요구를 결정하는 데 필요한 연습입니다.

다른 많은 RDBMS와 마찬가지로 MySql은 데이터를 저장하는 데 그 이상을 제공 할 것입니다. MySql과 같은 최신 db를 사용할 때 가장 큰 이점은 ACID입니다. 즉, 데이터를 통해 일관성을 보장하기 위해 전부 또는 일부 트랜잭션을 얻습니다.

관련 레코드가 그대로 유지되고 다른 데이터 레코드에 대한 포기 된 참조를 남기지 않도록 referential integrity을 얻을 수도 있습니다. 우리는 계속해서 locking의 가치 또는 stored procedures의 가치를 논의 할 수 있습니다.

하지만 실제로는 애플리케이션의 요구 사항을 고려해야합니다. 데이터를 읽고 쓰는 중 공유 액세스 및 파일 잠금을 염려하는 경우 데이터를 순서대로 보관하기 위해 중요한 체조를 수행하는 경우 XML 파일을 기반으로 펀트를해야합니다. 기본 mysql 데이터베이스가 이러한 문제를 해결할 때 이러한 문제를 해결할 방법을 찾을 필요가 없습니다.

+0

필자가 작업해온 모든 데이터베이스는 참조 무결성 문제가있었습니다 (주로 성능상의 이유로 정규화가 이루어지지 않았기 때문일 수 있습니다). 무료는 아니며 야생에 존재하지 않는 수준의 능력이 필요합니다. –

+0

응? 사실, 외래 키 참조를 사용하지 않고 데이터베이스를 설계 할 수 있지만, 구현 된 경우 일반적으로 작동하는 것으로 나타났습니다. – jro

0

진정한 관계형 데이터가 있다면 ... 거의 항상 RDBMS를 사용하면 도움이됩니다. 데이터 노드를 묶는 대신 쿼리 엔진을 사용하여 데이터를 빠르게 검색 할 수 있습니다. 또한 구조에 데이터를 삽입 할 때 참조 무결성을 얻습니다.

MySQL 용 ADO.NET 공급자가 있으므로 MS SQL Server보다 MySQL 데이터베이스를 다루는 데 더 이상 어려움이 없어야합니다.

DbLinq를 다운로드하고 LINQ to MySQL 기능을 추가로 제공 할 수도 있습니다. 일을 더 쉽게 만들 수 있습니다 (또는 Entity Framework를 MySQL ADO.NET 공급자와 함께 사용할 수도 있음).

0

XML 문서의 크기는 큰 요인 일 수 있습니다. XML에서는 방대한 양의 추가 데이터가 포함 된 크고 복잡한 텍스트 파일을 생성하거나 데이터가 여러 파일로 분할됩니다. 이러한 파일을 관리하는 것은 어려울 수 있습니다. SQL 데이터베이스를 사용하면 디스크 공간을 덜 낭비 할 수 있습니다.

SQL이 XML을 사용하는 것보다 빠릅니다.

모든 SQL 데이터베이스를 사용하면 XML을 사용하여 적용하기 어려운 권한 및 역할 기능 전체에 액세스 할 수 있습니다.

0

관계형 데이터가있는 경우 데이터베이스가 작동합니다. MySQL의 대안으로, 중앙 집중식 솔루션을 찾고 있지 않다면 SQLite를 사용할 수 있습니다. SQLite는 in-process에서 실행됩니다 (즉, 실행중인 프로그램이 자체 "데이터베이스 서버"임을 의미 함) SQLite를 포함하는 DLL 파일을 배포하는 것 외에는 설치가 필요하지 않습니다.

Robert Simpson은 .Net 프레임 워크 용 SQLite 데이터 공급자 인 System.Data.SQLite을 작성했습니다. 자유롭고 오픈 소스 (SQLite와 같은)이며 System.Data.SqlClient처럼 기본으로 작동합니다. 표준 ADO.Net 규칙, Linq 및 Entity Framework를 지원합니다.

여러 실행 (데이터 처리 및 작업 스케줄링) 간의 비교를 위해 로컬로 데이터를 빠르게 실행하고 캐시해야하는 응용 프로그램의 경우 프로젝트에서 System.Data.SQLite를 사용했습니다. Firefox는 SQLite를 사용하는 응용 프로그램의 좋은 예이며 Firefox 3는 쿠키, 다운로드 기록, 양식 자동 완성 및 가장 중요한 웹 검색 기록으로 SQLite를 사용합니다.

다시 SQLite는 직접 응용 프로그램을 사용하기위한 것이며 사용자 인증 및 스키마 권한과 같은 기능이 없습니다. 여러 프로그램이 동일한 데이터베이스에 쓰기를 시도하는 경우 문제가 발생합니다 (실제 RDBMS가 수행 할 수있는 것과 같이 작동 할 수는 없습니다). 가장 큰 장점은 MySQL처럼 작동하도록 설치 및 설정하지 않아도된다는 것입니다. C#의 경우 System.Data.SQLite를 참조하고 프로그램과 함께 .dll 파일을 복사하면됩니다.