SQL 대신 XML을 언제 사용합니까?
저는 몇 년 전부터 데이터베이스 기반 웹 애플리케이션 작업을 해왔고 최근에는 XML을 사용할 수 있는 CMS 관련 프로젝트를 수행했습니다.이를 통해 XML/XSLT의 일반적인 사용법과 모든 데이터를 (My)SQL 데이터베이스에 저장한 후 필요에 따라 PHP/Python/등을 사용하여 웹에서 작업하는 접근법보다 어떤 경우에 더 유용할지 생각하게 되었습니다.
여기서 내가 이해하지 못하는 게 분명해요데이터베이스가 아닌 XML 파일에 데이터를 저장하는 것이 더 나은 응용 프로그램의 예를 들어줄 수 있는 사람이 있습니까?
이 책(Effective XML: XML 향상을 위한 50가지 구체적인 방법)을 인용하려면:
"XML은 데이터베이스가 아닙니다.그것은 결코 데이터베이스가 되기 위한 것이 아니었습니다.그것은 결코 데이터베이스가 될 수 없습니다.관계형 데이터베이스는 20년 이상의 구현 경험을 보유한 검증된 기술입니다.견고하고 안정적이며 유용한 제품입니다.그들은 사라지지 않을 겁니다.XML은 서로 다른 데이터베이스 간 또는 데이터베이스와 다른 프로그램 간에 데이터를 이동하는 데 매우 유용한 기술입니다.그러나 그것 자체가 데이터베이스는 아닙니다.그렇게 쓰지 마세요."
제 생각에는 이것이 좀 직설적으로라도 요약되는 것 같습니다.XML은 데이터 교환 형식입니다.XPath 표현식을 가진 DOM을 쿼리할 수 있는 XML 구문 분석 라이브러리를 가질 수 있지만 DBMS와 동일한 것은 아닙니다. DOM/XPath 인터페이스를 가진 DBMS를 구축할 수 있지만 인덱스가 있는 DBMS 엔진과 데이터 형식을 구현하기 위해 필요한 ACID 속성이나 대용량 데이터 세트로 확장할 수 있습니다.DBMS의 로깅 및 기타 아티팩트 - (정의상) XML이 아닌 다른 것으로 만듭니다.
XML을 사용하여 다른 응용프로그램으로 보낼 파일을 만듭니다.XML은 데이터 저장 형식보다는 데이터 교환 형식으로 더 적합합니다.
XML을 사용할 때 설명하기에 나쁘지 않은 링크는 다음과 같습니다. 왜 XML을 사용해야 합니까?
SQL은 좋은 표 형식의 데이터로 행과 열에 쉽게 맞는 데이터입니다.XML은 여러 수준의 크기가 다른 계층 데이터에 적합합니다.
SQL은 저장 및 검색에 적합합니다.XML은 전송 및 포맷에 적합합니다.
1) 데이터를 다른 사람과 교환해야 할 때.XML은 웹의 "lingua franca"입니다. 데이터베이스 파일과 달리 거의 모든 사람이 읽고 해석할 수 있습니다.
2) 데이터 볼륨이 작아서 복잡한 쿼리를 수행할 필요가 없는 경우 XML 파일은 구성이나 문서 템플릿을 저장하는 데 유용합니다.
3) 동일한 데이터에 액세스하려는 작성자가 많지 않을 때.SQL 데이터베이스는 사용자를 위해 배후에서 작동하는 동시성 메커니즘을 포함합니다.SQL 데이터베이스는 대용량 데이터 세트에 대한 정보를 신속하게 검색할 수 있도록 인덱스를 지원할 수 있습니다.
XML을 사용하는 용도:
- 개체 계층 구조를 유지합니다.
- 한 프로세스 또는 머신에서 다른 프로세스 또는 머신으로 데이터 이동.
- 거의 변경되지 않는 데이터, 구성 설정 등.
- XSLT에 대한 입력이 변환됨에 따라: 일반적으로 말하자면, 내 프로그램 중 하나가 HTML을 내보낸다면, 그것은 XSLT를 사용하여 그것을 하고 있으므로, 소스 데이터는 어느 정도 XML로 표현될 것입니다.
- 문자 마크업 (잊지말자!)
이러한 활용 사례와 데이터베이스의 활용 사례 간에 중복되는 부분이 많지 않습니다.몇 개는 있지만 많지는 않습니다.
아이러니하게도, 현재 XML을 가장 많이 사용하고 있는 곳은 인메모리 ADO DataSet을 구축하고 DataSet의 WriteXml 및 ReadXml 메서드를 사용하여 지속 및 검색하는 데스크톱 앱입니다.저는 ADO를 사용하고 있는데, 그 이유는 메타정보에 의해 정의된 데이터 모델을 ADO를 사용하여 동적으로 구축하는 것이 작업에 대한 저만의 객체 모델을 구현하는 것보다 훨씬 더 쉽기 때문입니다.
XML을 데이터베이스로 사용하는 것처럼 보이는 경우가 있습니다.하지만 전 정말 아니에요.저는 데이터베이스와 같은 많은 기능을 구현하는 객체 모델을 사용하고 있으며, XML을 지속성 형식으로 사용하고 있습니다.
하지 마.
책에서 작성자 선택 시도
XML을 저장 매체로 많이 사용하는 상용 응용 프로그램이 꽤 있다고 생각합니다.사용자가 각 프로젝트를 자신의 파일에 저장하는 프로젝트 기획 애플리케이션을 위해 해봤습니다.이 앱은 USB 스틱에 저장되며, 설치가 0으로 필요합니다.모든 데이터는 XML에서 가져와 메모리에서 작업하므로 getRecord(id)는 매우 빠릅니다.
그래서 내 대답은..데이터가 메모리에 저장될 수 있을 정도로 작을 때 데이터베이스는 오버킬입니다.
데이터베이스(싱글 사용자 애플리케이션을 생각해 보십시오)를 보유하고 있지 않거나 매우 가벼운 스토리지 형식이 필요할 때는 언제든지 가능합니다.
또한 이전 포스터에서 언급했듯이, 교환 형식.
XML 및 RDMS는 모두 데이터스토어로 사용할 수 있지만 각 구현에는 각각의 장단점이 있습니다.
웹 응용 프로그램의 데이터를 저장하기 위해 XML을 사용하는 것은 많은 양의 데이터를 처리하기 시작하거나 데이터에서 다른 정보를 검색하기로 결정할 때까지 일반적으로 큰 문제가 되지 않습니다(예: 데이터 마이닝).다시 말해, 데이터 소스를 위해 많은 양의 XML 파일을 저장하는 것은 확장성이 뛰어나지 않지만 데이터 이동을 쉽게 해줍니다.XML을 사용하여 복잡한 개체를 관계형이 아닌 형식으로 직렬화할 수도 있으므로 XML에서 직접 개체를 직렬화/병렬화할 수 있으면 ORM이 필요 없습니다.
RDMS(데이터베이스)는 일반적으로 확장성이 뛰어나고 동시 지원 기능이 뛰어나며 대용량 데이터를 사용할 때 훨씬 빠릅니다.관계형 모델을 사용하면 나중에 데이터 마이닝을 쉽게 수행할 수 있습니다.데이터베이스는 개체-관계 임피던스 불일치(http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch) 로 인해 사용자가 보기 흉한 코드를 작성하거나 복잡한 ORM을 사용해야 할 수 있습니다.
호스트에 제한된 mysql 데이터베이스가 있는 경우 XML을 데이터스토어로 사용할 수 있는 기회가 제공됩니다.
SQL과 함께 XML을 사용하는 예는 다음과 같습니다. 인증된 사용자는 모두 동일한 DBMS가 아닌 다양한 데이터베이스에 데이터를 읽고 씁니다. A사의 사용자는 로컬 SQL Server 데이터베이스의 데이터를 사용합니다.B 사의 사용자들은 원격 오라클 데이터베이스의 데이터를 사용합니다.뭐 이런 거.동일한 기본 데이터에 대해 각각 약간씩 다른 스키마를 가진 12개의 서로 다른 데이터베이스.
웹 사이트 개발자는 원격 데이터베이스에 저장 프로시저를 만들 수 있는 기능이 없습니다.SQL은 웹 앱에서 데이터베이스로 직접 전송해야 합니다.데이터베이스마다 SQL 구문과 스키마가 조금씩 다르기 때문에 동일한 작업(SELECT, INSERT 등)을 위해 12개 데이터베이스마다 다른 SQL을 사용해야 합니다.
웹 앱에 SQL 문을 내장하는 방법 중 하나는 XML 파일에 배치하는 것입니다.각 XML 파일에는 십여 개의 데이터베이스 중 하나에 대한 SQL 문 집합이 포함되어 있습니다.이 코드는 로그인한 사용자가 액세스할 데이터베이스를 결정하고 지정된 XML 파일에서 적절한 SQL을 검색합니다.
저장 프로시저와 마찬가지로 XML 파일의 SQL을 응용 프로그램을 중지하거나 다시 컴파일하지 않고 업데이트할 수 있습니다.
일부 애플리케이션은 XML 파일을 사용하여 구성을 저장합니다. 저는 SQLite를 사용하는 것을 선호합니다.
저는 제 데이터를 저장하기 위해 어떤 종류의 XML도 사용하지 않을 것입니다.
당사는 SOA 앱에서 XSLT 변환을 데이터 추상화 계층으로 사용합니다.모든 개체는 XSLT로 서로 데이터를 전송하므로 이해하기 위해 필요한 언어는 하나뿐입니다.DB로 전송하기 위해 데이터를 SQL로 변환할 수 있어야 하는 데이터베이스 커넥터를 제외합니다.
이렇게 하면 앱에 수많은 개체가 분산된 SQL 문자열 생성이 없습니다.유지보수가 훨씬 쉬워집니다.
언급URL : https://stackoverflow.com/questions/201568/when-would-i-use-xml-instead-of-sql
'bestsource' 카테고리의 다른 글
ES6 맵 객체를 정렬할 수 있습니까? (0) | 2023.10.21 |
---|---|
web.config가 원하는 길이의 요청을 허용하도록 구성하는 방법 (0) | 2023.10.21 |
각도 물질에 다중 선택 옵션을 구현하려면 어떻게 해야 합니까? (0) | 2023.10.21 |
비트 필드에 열거형을 사용해도 안전합니까? (0) | 2023.10.21 |
데이터베이스 배포 전략(SQL Server) (0) | 2023.10.21 |