A Database Management System (DBMS) is a program used to manage and store large amounts of data. It commonly handles information generated by websites, businesses and programmers. Users can also use queries to search for specific information located in the database. Some DBMS allow users to create and develop applications using specific programming languages.
There are several things to consider when choosing a database for their project. The selected database will affect how data is stored, additional applications that can be developed, and ease-of-use.
Most people choose a DBMS application based on how they want to store and manage the information. These database models will also dictate how queries are processed and which software will work with the database.
Ad-hoc databases are the earliest models still in use today. The arrangement of data does not maximize the use of queries for retrieval. Rather, these are arranged so that the application can read them as a single file. Some ad-hoc databases allow users to access information randomly. These databases generally still need to search the entire database for the data.
Ad-hoc databases are ideal for long lists of information, such as address books. This kind of database is largely useful for those that do not need to access information using queries. This database model can handle relatively small volumes of data. Only one program at a time can access this kind of database. Ad-hoc databases are already included in the libraries of several programming languages. Examples are fwrite for the C programming language and BufferedFileStream for the Java programming language.
Users choosing ad-hoc databases need to be sure that the amount information stored will not suddenly increase. This kind of DBMS is unable to support larger volumes of data. It will also be more difficult to search for specific information when using the ad-hoc model.
Other databases structure information based on hash functions. Hashes are mathematical functions that act as keys to identify specific records in the database. Algorithm specialists have developed hash-based databases to allow users to easily access information using queries. This kind of database is fast and efficient.
Hash-based DBMS are ideal if the stored data is only accessed one at a time by a single program. This model might fail the user if information needs to be cross-referenced. This database model is already included in the Unix operating system. Most programming languages have APIs (Application Programming Interfaces) that allow users to access the database easily. This model is suitable for programs that select records one at a time. An example is when accessing user profiles for authentication.
Hierarchical database models arrange records within records. This model has become as popular as XML (Extensible Markup Language), since the language is has a hierarchical structure as well. This kind of database is suited for storing closely related data, such as customer histories consisting of personal information, customer service support calls, and purchases made.
One problem with hierarchical databases is that they accumulate repeated or redundant information. This model also makes it harder to conduct queries for records stored in the database.
Relational DBMS are the most common programs in the market. This database model lessens the chances of creating redundant information. Queries conducted in the relational database are faster and more accurate. Several applications, APIs and utilities support this kind of database.
Information that needs to be cross-referenced and combined will benefit the most from a relational database. This model is also more suited to large volumes of information. Corporations commonly use relational databases to store their information.
The relational DBMS was designed to manage data that has been modeled with mathematical precision. If the data or database design is unstructured, the functions of this database model might be unused. Database developers commonly use SQL (Structured Query Language) to describe and query information stored in a relational database.
An object database uses the features of object-oriented programming to structure data. This model saves data as objects with class definitions. Programmers use inheritance to give an object the aspects of other classes. Users can then add attributes and relationships to the record. Most databases have APIs using object-oriented languages such as C++, Python and Java. This model may be problematic if users do not structure the data design correctly.
Semi-structured databases are useful for modeling data in a user-friendly way. This model can store loosely organized records. It also allows users to change the database easily. Users can choose this database if the documents are as important as the structured records.
One problem of this database model is efficiency. The data in the semi-structured model consumes more resources. Queries are processes slower and may be inaccurate. Web-based applications and Intranets benefit the most from a semi-structured database.
Users may also wish to select a database that fits with the programming language they are proficient in. An API supporting the database would easily allow users to develop applications for it. Choosing a DBMS based on the compatible language can allow users to easily modify the database and develop software.
Some databases use an embedded access for the programming languages. In this case, the language creates the first-class structures for the database. Developers can apply typical programming concepts to the database as well. One language that uses this concept is ANSI SQL-C. This supports SQL commands used on a C variable. Users can also add C variables to act as parameters in queries. Queries can also be launched to return results as C values.
Another way of using a programming language for the database is to launch function calls to the database engine. This is the more common language support offered in DBMS. Some examples are the Java Database Connectivity (JDBC), Perl/Python Database Interface (DBI) and SQL call-level interface (CLI). When using this kind of programming language integration, developers need to monitor the data to transfer values back and forth from the language to database. This integration allows users more options when selecting a database access engine.
The DBMS program should fit with the platform in which it will reside. Make sure that the database can be accessed using the platforms of all users that will access it. Determine if the database will grow to anticipate if the current hardware will still be able to support it. There are also different DBMS to use if the database to support wireless computing.
Desktop or Server-based
Databases can lie on either desktop computers or servers. Users can select the DBMS based on how many people will be accessing and using it. There are several differences between these two kinds of databases.
Desktop databases are more affordable than server-based ones. Most products of this kind cost about $100. They are also simpler making them easier to use. Additional web functions are commonly included to allow users to publish information online. Some examples of desktop databases are Microsoft Access, FoxPro, FileMaker Pro, Lotus Approach and Paradox.
Users looking for a program that can perform complex data manipulations may be better off choosing a server-based DBMS. This kind of database allows several users to access it at the same time. It can also handle large volumes of information. Server-based databases generally have more features in exchange for a higher price.
A server-based database is more equipped to handle different data management procedures. This kind also has several functional APIs to develop database programs. The DBMS can also perform on a combination of hardware combinations. Server-based databases can be easily expanded to fit the user’s needs.
Data stored in the database needs to be protected. Multiple users can access confidential information stored in databases. Users can select a DBMS that is secure enough for their records. Most databases offer basic password protection. Other DBMS also monitor when specific users access certain records.
Data security can also mean making sure the information will not be lost. Most DBMS have backup and restore features to allow database recovery in case of system failure.
The standard test if a DBMS is reliable is called the ACID test. This stands for:
Atomicity means the program can complete all processes. This feature guarantees that processes do not abort suddenly. Consistency means that the database is stable whenever it is not completing a transaction. Isolation means that the database completes transactions individually of each other. This makes sure that any simultaneous functions do not interfere with each other. Durability means the database records all transactions so that they can be retrieved easily.
Open Source and Cost
The price of the database depends on the feature set it comes with. One way to get a functional database free is to use an open-source program. Two of the more popular open-source DBMS are MySQL and PostgreSQL.
An open-source application allows users to get a flexible and powerful database at zero cost. Open-source software relies on a community of programmers developing the program and disseminating it for free. The technical support and program updates will depend largely on how active this community is.
Since more than one person commonly accesses a database, an administrator typically needs to manage user access. Programs handle this differently. GUI (Graphic User Interface)-based and web-based administration control panels can be used. Some databases also have integrated administrator features. They can allow an administrator the basic option to choose and select users that have access, and the level of access they have.
To select a database for a project, users need to consider the extent of the project. The DBMS must also be flexible and complex enough to allow developers to create custom software for the database. Data storage, structure, and retrieval are some of the more important requirements. The most important thing is to select a database that users can modify to fit their needs, and one with the programming language and functions they are familiar with.