저는 몇 년 동안 데이터베이스 기반 웹 애플리케이션을 개발해 왔으며 최근에는 XML 지원 CMS와 관련된 프로젝트를 수행했습니다. 이로 인해 일반적으로 XML / XSLT의 사용에 대해 생각하게되었고 어떤 상황에서 모든 데이터를 (My) SQL 데이터베이스에 저장 한 다음 PHP / Python / 기타. 필요에 따라 웹에서 작업 할 수 있습니다.
분명히 내가 여기서 “얻지”못하는 것이있다 .. 누구든지 데이터베이스 대신 XML 파일에 데이터를 저장하는 것이 더 나은 응용 프로그램의 예를 제공 할 수 있습니까?
답변
이 책 을 인용하려면 (효과적인 XML : XML을 개선하는 50 가지 특정 방법) :
“XML은 데이터베이스가 아닙니다. 그것은 결코 데이터베이스가 아닙니다. 결코 데이터베이스가 될 수 없습니다. 관계형 데이터베이스는 20 년 이상의 구현 경험을 가진 입증 된 기술입니다. 그들은 견고하고 안정적이며 유용한 제품입니다. 그들은 사라지지 않습니다. XML은 서로 다른 데이터베이스간에 또는 데이터베이스와 다른 프로그램간에 데이터를 이동하는 데 매우 유용한 기술입니다. 그러나 그 자체가 데이터베이스는 아닙니다. 하나처럼 사용하지 마십시오. “
나는 이것이 조금 퉁명스럽게 요약한다고 생각합니다. XML은 데이터 교환 형식입니다. XPath 표현식으로 DOM을 쿼리 할 수있는 XML 구문 분석 라이브러리를 가질 수 있지만 DBMS와는 다릅니다. DOM / XPath 인터페이스를 사용하여 DBMS를 구축 할 수 있지만 ACID 속성을 가져 오거나 대규모 데이터 세트로 확장하려면 DBMS 엔진과 DBMS의 인덱스, 로깅 및 기타 아티팩트가있는 데이터 형식을 구현해야합니다. XML 이외의 것입니다.
답변
XML을 사용하여 다른 응용 프로그램으로 보내야하는 파일을 만듭니다. XML은 데이터 저장 형식보다 데이터 교환 형식으로 더 적합합니다.
다음 링크는 XML을 사용할 때 설명하기에 나쁘지 않습니다. 왜 XML을 사용해야합니까?
답변
SQL은 행과 열에 쉽게 들어갈 수있는 좋은 표 형식 데이터입니다. XML은 여러 수준의 크기가 다른 데이터 인 계층 적 데이터에 적합합니다.
SQL은 저장 및 검색에 좋습니다. XML은 전송 및 서식 지정에 적합합니다.
답변
1) 다른 사람과 데이터를 교환해야 할 때. XML은 웹 의 ” 언어 “입니다. 데이터베이스 파일과는 달리 거의 모든 사람이 읽고 해석 할 수 있습니다.
2) 데이터 볼륨이 작고 이에 대해 복잡한 쿼리를 수행 할 필요가없는 경우. XML 파일은 구성 또는 문서 템플릿 저장과 같은 작업에 적합합니다.
3) 동일한 데이터에 액세스하려는 작성자가 많지 않을 때. SQL 데이터베이스에는이면에서 작동하는 동시성 메커니즘이 포함되어 있습니다. SQL 데이터베이스는 대규모 데이터 세트에 대한 정보를 신속하게 검색하기 위해 인덱스를 지원할 수 있습니다.
답변
내가 XML을 사용하는 것 :
- 개체 계층 유지.
- 한 프로세스 또는 시스템에서 다른 프로세스 또는 시스템으로 데이터 이동.
- 거의 변경되지 않는 데이터; 구성 설정 등.
- XSLT에 대한 입력이 변환됨에 따라 일반적으로 내 프로그램 중 하나가 HTML을 내 보내면 XSLT를 사용하여이를 수행하므로 소스 데이터는 일부에서 XML로 표시됩니다.
- 텍스트 마크 업. (그것을 잊지 말자!)
이러한 사용 사례와 데이터베이스 사용 사례 간에는 겹치는 부분이 많지 않습니다. 일부는 아니지만 많지는 않습니다.
아이러니하게도 현재 XML을 가장 많이 사용하는 곳은 인 메모리 ADO DataSet을 빌드하고 DataSet의 WriteXml 및 ReadXml 메서드를 사용하여이를 유지하고 검색하는 데스크톱 앱입니다. ADO를 사용하는 이유는 ADO를 사용하여 메타 정보에 의해 정의 된 데이터 모델을 동적으로 구축하는 것이 작업에 대해 내 자신의 개체 모델을 구현하는 것보다 훨씬 쉽기 때문입니다.
여기에 XML을 데이터베이스로 사용 하는 것처럼 보이는 경우가 있습니다. 하지만 정말 아니에요. 저는 많은 데이터베이스와 같은 기능을 구현하는 개체 모델을 사용하고 있으며 XML을 지속성 형식으로 사용하고 있습니다.
답변
XML을 저장 매체로 많이 사용하는 상용 응용 프로그램이 많이 있다고 생각합니다. 사용자가 각 프로젝트를 자체 파일에 저장하는 프로젝트 계획 애플리케이션을 위해이 작업을 수행했습니다. 이 앱은 USB 스틱에 있으며 설치가 필요하지 않습니다. 모든 데이터는 XML에서 가져 와서 메모리에서 작업하므로 getRecord (id)는 매우 빠릅니다.
그래서 내 대답은 .. 데이터가 메모리에 저장 될만큼 작을 때 데이터베이스는 오버 킬입니다.