A **Database Management System (DBMS)** is a **collection of interrelated data and a set of programs** that allow users to access and modify that data. Its primary goal is to provide a convenient and efficient way to store and retrieve database information. The data collection, often called the **database**, contains information relevant to an enterprise. A DBMS is a **general-purpose software system** that facilitates defining, constructing, manipulating, and sharing databases among various users and applications. It manages large bodies of information that are highly valuable, relatively large, and accessed by multiple users and applications, often concurrently. Key functions of a DBMS include: * **Defining data types, structures, and constraints** for the data. This definition, known as **meta-data**, is stored in a **DBMS catalog or dictionary**. * **Constructing** the database by storing data on a storage medium controlled by the DBMS. * **Manipulating** the database, which involves querying, updating (inserting, deleting, modifying), and generating reports. * **Sharing** the database, allowing multiple users and programs to access it simultaneously. This requires **concurrency control software** to ensure updates are correct. * **Protecting** the database against hardware/software malfunctions (crashes) and unauthorized access. This includes providing **backup and recovery facilities**. * Maintaining the database over time, allowing the system to evolve with changing requirements. * Providing **multiple user interfaces** for different types of users. The database and DBMS software together are referred to as a **database system**. ### Classifications of DBMS DBMSs can be classified based on several criteria: * **1. Data Model**: This is the primary criterion. * **Relational Model**: This is the **most widely used data model**. It represents data as a **collection of tables** (also known as relations), where each table has multiple columns (attributes) and each column has a unique name. Its conceptual simplicity has led to widespread adoption. **SQL (Structured Query Language)** is the most influential user-oriented relational language, used for data definition, manipulation, and security. Current relational DBMSs are mostly using SQL for defining schemas. * **Object Data Model (ODB)**: Defines a database in terms of **objects, their properties, and their operations (methods)**. Objects with similar structure and behavior belong to a class, and classes are organized into **type hierarchies with inheritance**. This model was proposed to meet the needs of complex applications like engineering design, scientific experiments, and multimedia, which require complex object structures, new data types, and non-standard operations. * **Object-Relational DBMSs (ORDBMSs)**: These systems evolved from relational DBMSs by incorporating many concepts from object databases. They enhance relational capabilities with features like complex data types and inheritance. * **Hierarchical and Network Models (Legacy Systems)**: These are older models that were widely used in the past. * **Hierarchical Model**: Represents data as **tree structures**, where each hierarchy represents related records. Examples include IMS (IBM). * **Network Model**: Popularized by CODASYL DBTG, it allows more complex relationships than hierarchical models, representing data as records and set types. Examples include IDMS and IMAGE. * **Semi-structured Data Model / XML Model**: Permits data items of the same type to have different sets of attributes, contrasting with fixed-format models. JSON and XML are widely used semi-structured data representations. The XML model is tree-structured (hierarchical). * **NoSQL Systems / Big Data Systems**: These are a newer class of systems that emerged to manage vast amounts of data, often with variable structures, focusing on high performance, availability, data replication, and scalability. They typically do not support the SQL language. Common categories include: * **Key-Value Data Model**: Stores records based on a key for fast retrieval. * **Document Data Model**: Stores data as documents, resembling complex objects, often based on JSON. * **Graph Data Model**: Represents data as **nodes and relationships (directed edges)**, with properties on both. * **Column-based Data Model**: Partitions tables by column into column families, storing each in its own files and allowing data versioning. * **2. Number of Users Supported**: * **Single-user systems**: Support only one user at a time, commonly used on personal computers or mobile devices. * **Multiuser systems**: Support concurrent access by many users, common in enterprise applications like airline reservations, banking, and stock exchanges. * **3. Number of Sites (Distribution)**: * **Centralized Database Systems**: Run on a single computer system. They can support multiple users, but the DBMS and data reside entirely at one site. * **Parallel Systems**: Designed to run on a **cluster of multiple machines** to execute tasks in parallel for higher processing speeds and larger data volumes. * **Distributed Database Systems (DDBMS)**: Span **multiple geographically separated machines** or sites connected by a computer network. They aim to provide advantages of distributed computing to the database domain. * **Homogeneous DDBMSs**: Use identical DBMS software across all sites. * **Heterogeneous DDBMSs**: Can use different DBMS software at each site. * **Federated DBMS (FDBS) / Multidatabase Systems**: Involve middleware software to access several autonomous, preexisting databases under heterogeneous DBMSs. They are loosely coupled and have a degree of local autonomy. * **4. Cost**: DBMS packages vary significantly in cost, from free open-source systems like MySQL and PostgreSQL to enterprise-level systems costing millions annually for installation and maintenance. Licensing models can also vary (site licenses, per-user licenses). * **5. Types of Access Path Options / Generality**: * **Access Path Options**: Some DBMSs are classified based on the types of access paths for storing files, such as those using **inverted file structures**. * **Generality**: * **General-purpose DBMS**: Can be used for a wide range of applications. * **Special-purpose DBMS**: Designed and built for specific applications when performance is a primary consideration. Examples include early airline reservations and telephone directory systems, which fall into the category of **Online Transaction Processing (OLTP) systems**. OLTP systems must support a large number of concurrent transactions without excessive delays.

视频信息