54.2.1 Advanced Data Models


Object-oriented, Object-relational, and XML Data Models

  1. Object-oriented Data Model (OODM):
    • DefinitionThis data model is built around the concept of objects, much like object-oriented programming. Objects are instances of classes, and classes have attributes and methods.
    • FeaturesEncapsulation, inheritance, and polymorphism.
    • UsageSuitable for applications where complex data structures or operations are needed, such as CAD systems or simulation software.
  2. Object-relational Data Model (ORDM):
    • DefinitionThis model attempts to merge the strengths of both relational and object-oriented data models. It enhances the RDBMS with features of the OODM.
    • FeaturesAllows objects, classes, and inheritance into the database schema and query language.
    • UsageUseful in scenarios where there’s a need for a robust relational database system but with the flexibility and features of object-oriented structures.
  3. XML Data Model:
    • DefinitionStructured around XML documents. XML databases can be used to store and query XML data.
    • FeaturesHierarchical data structure using XML tags. Allows for schema or can be schema-less.
    • UsageParticularly useful for applications needing to store and exchange data with diverse structures, such as configuration files, data interchange, and content management systems.

NoSQL Data Models

  1. Document Databases:
    • DefinitionStores data in documents (typically JSON or BSON). Each document contains key-value pairs and is uniquely identifiable.
    • ExamplesMongoDB, CouchDB.
    • UsageSuited for content management systems, e-commerce platforms, and scenarios where data can be easily encapsulated in single documents.
  2. Key-Value Databases:
    • DefinitionSimple data model where every item in the database is stored as a key-value pair.
    • ExamplesRedis, Amazon DynamoDB, Riak.
    • UsageSuitable for caching systems, session management, and applications requiring rapid access to data.
  3. Wide-Column Databases:
    • DefinitionStore data in tables, rows, and dynamic columns. Each row is uniquely identifiable, but different rows might have different columns.
    • ExamplesApache Cassandra, HBase.
    • UsageSuitable for analyzing large datasets, as seen in recommendation engines or monitoring systems.
  4. Graph Databases:
    • DefinitionFocus on the relationships between data. They use nodes to store entities and edges to store the relationship between entities.
    • ExamplesNeo4j, ArangoDB.
    • UsageIdeal for social networks, recommendation systems, or any application where relationships are core to the data model.

In conclusion, the choice of a data model and the corresponding database technology is pivotal for the efficient storage, retrieval, and manipulation of data in an application. The nature of the data and its use-cases dictate which model is best suited, and often, modern applications employ a combination of these models to fulfill their diverse needs.



Key terms in plain language

Open a term for a concise explanation of language used on this page.

Cloud Computing

Computing resources—such as applications, servers, storage, or databases—delivered from remote infrastructure and scaled as requirements change.

Infrastructure as a Service (IaaS)

Cloud-based servers, storage, and networking that customers configure and manage without owning the underlying data-center hardware.

Software as a Service (SaaS)

Software accessed as an online service instead of being installed and maintained entirely on the customer’s own computers or servers.

Disaster Recovery (DRaaS)

A plan and service for restoring applications, data, and operations after an outage or disruption. DRaaS provides recovery infrastructure through a managed cloud service.

Identity and Access Management (IAM)

The systems and policies that determine who a user is, what resources they may access, and how that access is authenticated and reviewed.

API

An application programming interface is a defined way for software systems to exchange data or request functions from one another.