| ||
Chapter 9 gave a generic introduction to what exactly a native XML database is. Essentially, a native XML database is an XML document. Every XML document is a form of a database, all by itself. Why? Because every XML document contains both metadata and data. The data lies in the textual values between the opening and closing tags, and in the values of attributes in elements. In the following example, Algeria is data, and 1 is also data because it is the value of the id attribute:
<country id="1">Algeria</country>
Metadata in an XML document is dictated by the elements, the attributes describing those elements (relating attributes to parent elements), and the relationships between all the elements in the entire XML document (the hierarchy). In the following example, a hierarchy can be clearly seen between the various types of locations. Also, attributes describe aspects of each location:
<?xml version="1.0"?> <demographics> < region id ="1" name="Africa"> <population>"Lots and lots"</population> <area>"More than most would think"</area> < country id="1" name="Egypt"> <population>"20 million"</population> <area>"A big country"</area> < city id="1" name="Cairo"> < population >"Could be 12 million"</population> <area>"Kinda big"</area> </city> <city id="2" name="Alexandria"> <population>"Lets say 5 million"</population> <area>"Not as big as Cairo"</area> </city> </country> <country id="2" name="South Africa"/> </region> <region id="2" name="Europe"> <population>"Probably close to 1 billion"</population> <area>"Less than you might think"</area> </region> <region id="3" name="North America"/> </demographics>
There are numerous well-known, widely used, and also well-supported native XML databases:
Tamino: This is a suite of products including a native XML database. The data storage can consist of multiple data sources, including both native XML and relational database storage. Tamino is a heterogeneous storage environment.
eXist: This native XML database uses a specialized indexing mechanism with BTrees pointing at page divided files, which might make it more efficient.
TigerLogic: This native XML database can be used to store both structured (XML) documents, and unstructured data (multimedia). This database might be edging a little closer to object database technology, as compared to other competing native XML databases.
XHive: This native XML database supports anything and everything that is XML. It also allows for extensive indexing. Indexing is important to large data stores because it enables you to search into those large data stores for specific data items. Indexing saves you from having to scan large areas of disk every time something small is required. Even when large sets of data are searched, indexes help to scan information in pre- constructed , sorted order. Indexing can help to improve overall performance drastically, also enabling a native XML database to be far more scalable than, perhaps, other competing native XML databases.
XIndice: This native XML database engine is built with the specific task of storing and managing large collections of small- sized XML documents. It also allows for indexing and compression.
DBPrism: This tool is not actually a native XML database but a tool thats interesting enough that its worth mentioning here. DBPrism allows for dynamic generation of XML documents directly from a database. That generated data can be transformed directly from a relational database into an XML document. That XML document is, in reality, a native XML database in itself. However, Chapters 5 and 6 show that relational databases that include native XML data types allow this type of functionality within industry- tested and accepted bounds of a relational database anyway.
Many native XML databases support tools such as XPath 2.0, XQuery, XLink, and XPointer as do some relational databases, to a lesser and greater degree. If not, then relational database vendors are likely working on these issues, if they are in demand.
| ||