This Tutorial Explains What is MySQL and why it is used. You will learn about the Benefits & Features like Data Security, High Availability & Cloud Service:
In the previous tutorial of Oracle Database Application Development, of Complete ORACLE Series, we have learned about Oracle SQL, PL/SQL & Oracle APEX along with their features, benefits, and example programs.
In this era of digital transformation, applications like Facebook, Instagram, Twitter, and others have raised the expectation for enterprise applications by stepping into the world of advanced technologies. They are offering solutions based on the latest techniques available in the market.
MySQL has turned out to be one of the most popular open-source databases used by organizations for web development. It is the central component of LAMP, which is a software stack model that facilitates building web applications and websites.
LAMP is the acronym used for its four open-source components i.e. Linux OS, Apache HTTP Server, MySQL RDBMS, and PHP programming language.
It is preferred most as an embedded database and is considered by ISVs and OEMs for distribution.
What You Will Learn:
What Is MySQL?
MySQL is a Relational Database Management System (RDBMS), named after the founder Michael Widenius‘s daughter as “My” and SQL stands for “Structured Query Language”. The first version of this database was released in 1995 and later on, Oracle acquired the same in Jan 2010, when it was with Sun Microsystems.
This database is written in C and C++ language and it can work on different platforms like Microsoft Windows, Oracle Solaris, AIX, Symbian, Linux, MAC OS, etc.
It is available with two editions.
- MySQL Community Server (Open Source).
- MySQL Enterprise Server (Proprietary).
Both of the editions share the same code base except, Enterprise Edition comes with a series of extensions that can be installed as server plugins.
Benefits Of MySQL
The benefits are enlisted below:
- Easy to use: As it supports SQL language, users don’t need to be technically expert to access the database. It can be easily accessed by users with basic SQL knowledge and experience on other relational databases.
- Cost Free: Another benefit of using this database is that the user doesn’t have to spend money to pay the license fee, as it is free of cost and available on the official website for download.
- Customizable Code: As it is available as an open-source tool, software developers have an option to customize the source code as per their own applications and use it. The source code is freely available to web users. The do’s and don’ts of the software are defined in GPL i.e. GNU General Public License.
- Secured: It offers one of the most secured databases in the world and hence used by well-established web applications like Facebook, Twitter, Instagram, etc. Its various security features like Firewall, Encryption, and User Authentication are the helping hands in protecting sensitive user information from intruders.
- Better Performance: It supports the multi-engine storage feature which facilitates database administrators to configure the database in a way to balance the workload. Hence, it makes the database flawless in terms of performance.
- High Availability: It offers 24*7 hours availability and offers solutions like Master/Slave Replication and specialized Cluster Servers.
- Scalability: It offers very good scalability to web applications through MySQL Thread Pool provided by MySQL Enterprise Edition. A thread pool provides a model that is used for managing threads (or processes), like the multi-user connections overhead and execution requests, in a hassle freeway.
- Platform-Friendly: It is a platform friendly database supporting a number of platforms like Microsoft Windows, Oracle Solaris, AIX, Symbian, Linux, MAC OS, etc.
- Friendly Interface: It has a user-friendly interface with a lot of self-management features and different automated processes like configuration and administration related tasks, which allows users to do the job effectively from Day 1.
Why Is MySQL Used?
Let’s have a look at highlighted features of this database like Data Security, High Availability & Cloud Service in detail to understand why is it a preferred database?
Whenever a database is created, the very next step is to identify and formulate a security policy before giving access to the database users. It is considered to be highly rated in the area of data security. That’s the reason, it is being trusted by the world’s most popular web applications like Facebook, Instagram, Joomla, Twitter, etc. It offers various safeguards that stand by the database and prevents breaching.
Listed below are a few of the security features offered by MySQL.
#1) MySQL Enterprise Firewall
Enterprise Firewall protects databases against security threats such as SQL Injection, Sniff Attack, or Trojan Horse. It monitors the database constantly, sends alerts if required, and even blocks any suspicious or unauthorized activity. It prepares a whitelist of approved SQL statements according to which it measures the authenticity of user activity.
#2) MySQL Enterprise Encryption
Encryption is a data securing process through which sensitive data can be encoded and only authorized users can decode the same. It offers the provision of encrypting data through Public Key Cryptography. MySQL Enterprise Encryption facilitates:
- Data Encryption using RSA, DSA, or DH algorithms.
- Key Generation to perform Data Encryption and Decryption.
- Digital Signature to authenticate senders.
- Avoids data exposure by authorizing DBAs to manage encrypted information.
#3) MySQL Transparent Data Encryption (TDE)
MySQL TDE offers better security by encrypting critical information at the physical data files level. Physical files of the database get encrypted even before data gets written to storage devices and they only get decrypted during the reading process. This prevents hackers or malicious users from accessing sensitive data.
#4) User Authentication
Different user authentication modules, like Linux Pluggable Authentication Modules (PAM) or Windows Active Directory, have been offered by the Enterprise Edition that can be easily plugged in with the existing applications to enhance their security by maintaining a centralized directory. This feature eliminates the need to maintain the user’s portfolio within individual systems.
#5) MySQL Enterprise Audit
This is an Enterprise solution that performs auditing based on defined policies. The audit is being performed to track user activity in order to control security and prevent misuse of information. This solution allows administrators to
- Enable or disable the audit stream.
- Customize policies to perform logging for all or selected user activities.
- Perform integration of XML based audit log file with MySQL, Oracle, or other solutions.
#6) InnoDB Transactional Support
MySQL storage engine InnoDB supports ACID-compliant transactions within the database for ensuring its security. Features like Multi-Version Concurrency Control (MVCC), maintains database snapshots at different points of time, and foreign keys implementation helps in maintaining database integrity.
#7) MySQL Online Backup
Using Online Backup, database backups can be taken while the database is the inactive state. Along with “Hot” or “Online” backup, it allows Full, Partial, Incremental, or Selective backups. It also allows database recovery using the “Point In Time Recovery” (PITR) method.
A storage engine is a component within a database that is used to perform different SQL operations related to data creation, data manipulation, and data management. They are designed for different purposes and hence, perform the best when used accordingly.
Different storage engines supported by MySQL are mentioned below:
It is the default storage engine for MySQL 5.5 and higher versions.
Various features supported by InnoDB are as follows:
- It offers ACID Compliant transactional support along with transactional features to protect data like commit, roll-back, and crash recovery. ACID means Atomicity, Consistency, Isolation & Durability, which are the properties of transactions within the database, ensuring data validity.
- It supports row-level locking which allows hassle-free multi-user access without affecting database performance.
- Allows usage of the clustered index to organize data for quicker access.
- Supports FOREIGN KEY referential integrity constraint to maintain data integrity across DB tables.
Prior to MySQL version 5.5, MyISAM used to be the default storage engine for MySQL. This engine is suitable for non-transactional environments like Data Warehouses, where huge tables are there with minimal write operations.
To perform any operation, MyISAM will lock the entire table (table-level locking), that has non-transactional data rather than filtering out the rows within a transactional table (row-level locking) as in InnoDB. This filtering process consumes time and hence, MyISAM performs better than InnoDB in this situation.
Memory storage engine is considered to be the fastest one as it doesn’t store data on the physical disk. Rather, it creates data tables in memory itself which can be accessed quickly. It allows table-level locking and loses data once the database gets restarted.
This storage engine allows data to be saved in CSV files. It offers flexibility as CSV files can be easily integrated with most of the applications.
Merge organizes the MyISAM tables by grouping similar tables together and referring them as a single object. It helps in managing data when in volume, and is more suitable for data warehousing environments.
As the name suggests, the Archive engine is used for storing and retrieving historical data. It does not support transactional data and compresses data quickly upon insertion.
Federated engine is recommended for a distributed data environment and it allows the creation of one logical MySQL database by linking the number of physical MySQL servers. Hence, no data gets saved on a local server, and queries will get executed on remote servers automatically.
Storage engine Blackhole can take the data as an input but doesn’t have the ability to store the same. It always returns empty set whenever queried. This type of storage engine is generally used while conducting performance tests, as data storage is not required for the same.
Data is the heart of any application whether it is on the web or a mobile, be it a social, enterprise, or cloud application. Hence, data availability is the foremost priority for all these applications and they cannot afford any downtime, even for a few minutes.
Term High Availability refers to the ability of an application to cope up in case of failure. Failure could be due to technical faults at the host, database, or at the OS level or it could be a hardware issue.
It offers 24*7 hours availability and offers a number of solutions for the same as mentioned below:
Replication allows data to be copied from one MySQL server (called as Master) to one or more servers (called as Slaves) so as to keep a backup in case failover happens with source server and also to divide workloads. So, this process is also known as the Master/Slave Replication process which ensures the high availability of database servers.
#2) Fail-Over Management with Replication GTIDs
GTIDs stands for “Global Transaction Identifiers” which are the transaction ids for each committed transaction on master servers. In case a failover happens before sync completes for the slave, pending transactions can be identified by comparing the replicated data on slave servers using GTIDs. Hence, better Fail-Over Management can be done using Replication GTIDs.
#3) Group Replication
During Group Replication, a group of servers coordinate with each other and form a group. A powerful communication system is used by members of this group to coordinate on tasks like failover handling, maintaining data consistency, server replication, etc.
Hence, using group replication is more efficient as no manual intervention is required and auto-configuration will happen for the group, in case a new member adds or leaves the group.
#4) MySQL Cluster CGE (Carrier Grade Edition)
MySQL Cluster is a transactional database that offers high availability up to 5 Nines (99.999%) which means downtime will be less than 5.26 minutes per year. MySQL achieved this by possessing “share-nothing” architecture with no point of failure. MySQL Cluster can replicate in-memory or disk-based data to all nodes within a cluster in no time and hence supports high availability.
This database can also be installed on cloud platforms like Oracle Cloud, Amazon EC2, and Microsoft Azure.
Cloud platform like Oracle Cloud has offered MySQL “as a Service” which gives the user the ability to deploy MySQL Server in the cloud. Hence, users don’t need to install the database on their local servers, and instead, databases are maintained over the cloud platform. Cloud service owners will take care of database installation, administration, and maintenance tasks.
In order to create a MySQL Service instance over the cloud, users need to complete the below pre-requisites.
- Procure subscription for MySQL Cloud service.
- Create an SSH key pair that will provide secure access to the nodes on which deployment is supposed to be done.
Application owners can use MySQL as a service for building their applications in a secure and cost-effective way. As Oracle MySQL is built over MySQL Enterprise Edition, it supports all advanced features of this edition over clouds such as MySQL Data Encryption, MySQL Enterprise Authentication and Encryption, MySQL Firewall and Network Access Control.
Once a database is created and user permissions are set, it’s time for the users to access the database.
A user can connect to the database using the below-mentioned ways:
#1) Command Line Utility
“mysql” is the command-line tool offered by MySQL Client program which can be used to interact with the database. mysql is a SQL shell having editing capabilities while giving inputs, and it presents query results in ASCII table format.
#2) GUI Tools
To access any database, GUI tools are more convenient and time-saving than Command Line tools. GUI tools are the ready-to-use visual interfaces that can be easily accessed by users, even if they don’t have much technical knowledge.
There are a lot of tools available to access the MySQL database. Let’s go through a few of them which may help in deciding the more suitable one for you.
GUI tools are enlisted below:
(i) MySQL WorkBench
It is a user interface that can be used by all database job profiles which could be an architect, database developer, or database administrator. It possesses a strong set of features that supports the designing, development, and management of databases with a user-friendly visual display. This tool is available on Windows, Linux, and Mac OS X platforms.
The key features of WorkBench are as follows:
- Visual SQL Development.
- Visual Database Administration.
- Performance Tuning.
- User and Session Management.
- Visual Data Modelling.
- Forward/Reverse Engineering.
- Database Migration.
This is one of the legacy tools developed in 1998, written in PHP to administrate the databases over the web. This tool is free of cost and comes with detailed documentation that can help users perform their tasks.
Its rich set of features support all kinds of database operations like,
- Browsing databases.
- Creating/Dropping Databases and Objects.
- Altering Databases and Objects.
- Managing user privileges.
- Import/Export utility.
This is another open-source tool, released in 2015, and licensed with GNU GPL. It is available on Windows and OSX platforms.
Various features of this tool are as follows:
- Portable with an easy installation process.
- It can connect to multiple servers through a single window.
- Can connect to MySQL server through the command line or SSH tunnel if the default port is not open for remote connections.
- Performs auto syntax correction and completion.
- Works well with Linux, provided Wine platform is there.
Is it all about MySQL? No, there is a lot more about it.
Here, we have tried to cover all the basics of MySQL along with highlighted features which can give a high-level understanding of the database. Hopefully, after reading the content above, you would be able to connect with the same in the future and would start counting on MySQL DB in a real-time scenario.