Databases are essential aspects of every organization and they are core elements of applications and computers, they store all the important information that is required to run software applications. There is always a database, or in some cases, multiple databases that work behind the scene to keep applications functional.
Every database software must have the standard industry practice to minimize the risk and improve database stability.
Here are some of the best approaches for the On-Premise SQL database systems.
- Database design:
Database design matters because it is essential for building software applications that are scalable and capable of performing during high workload. Good database design is a scalable one, which means that it can endure a high workload and keep the application running even if the usage is increased.
- Planning: Start building a database with input from the project sponsor and other stakeholders. An ER diagram helps to design databases efficiently.
- Data Type: SQL databases are the standard for structured data when data integrity is important. Try to keep the same data type for entire database tables to minimize the convert data types later.
- Use constraints (foreign key, check, not null, etc) for data integrity.
- Normalize Data: There should be a standard structure for the data, and it should in appropriate Normalization form, use a good technique for organizing the data in the database. Use a well-organized approach on tables to eliminate data redundancy (repetition).
- Build Transparent Structures:
Naming conventions might not appear important during the database design. Names are the key to understanding a model. They are an introduction and should be logical. Inconsistent naming serves no purpose.
- Do not jumble the names of the system stored procedure, views, and function with the newly created user object names.
- The database belongs to its future users, not its creator, so design with them in mind. Stay away from shortcuts, abbreviations, or plurals. Use consistent naming conventions.
- The database must have internal conventions also use singular names for tables, singular names for columns, and PascalCase.
- Use singular for table names, don’t use spaces for table names.
- Security of database:
The Security of the database is a complex and challenging endeavour that involves all aspects of information technologies and practices. The databases are always network-accessible, any security threat to any component within or portion of the network infrastructure is also a threat to the database, and any attack impacting a user’s device or workstation can threaten the database.
Always compartment your sysadmins and application users on the databases. Enable the login audit, data change, and user information on the databases and the servers. Transparent Data Encryption will help to secure data in a database.
There should be limited users with minimal permissions, apart from sysadmins. The application should run with separate domain accounts. Encrypt passwords, an administrator should be assigned with appropriate training and well-documented qualifications.
- Database Maintenance:
A clean and up-to-date database is very important to boost query performance, there should be regular interval maintenance plans to keep the database updated.
- Check for the recursively running queries on the databases and make a list of it.
- Check and create indexes for the queries that will be used regularly.
- Use a database analyzer to determine if an index or a clustered index is necessary.
- When data is growing, make sure you are rebuilding the indexes, and updating the statistics of the databases.
- Make sure you have ample of space for the database growth.
SQL Server has an inbuilt option for the database maintenance
You can choose between the inbuilt maintenance plan or the custom scripts to automate the backup, index rebuilds/reorganize, shrink databases, and update statistics.
Here are the inbuilt option and the task sequence for the maintenance plan.
- Database Server Maintenance:
In addition to boosting the database performance the physical/virtual database server should be maintained with proper care for potential problems, regularly perform routine maintenance tasks to keep the server running smoothly and with optimum performance.
Use a dedicated Server for the databases. Do not combine the Web and Database system, a database should reside on a separate database server located behind a firewall.
Use an appropriate environment for Development, Test/UAT, and Production.
Use separate drives for the data and log file with ample of space on HDD. Use the current patches of the OS, also Database software patches that give you the security and bug fixes and newly added features.
- Database Backups and HA/DR Setup:
Accidents do happen, therefore in following best practices it’s critical to establish strong backup and disaster recovery procedures to prevent a loss of data that could be detrimental to your organization. Companies design backup plans and they perform multiple log file backups frequently throughout the day. A recommended best practice is developing a comprehensive maintenance plan that automates your backup processes.
Make sure you are running with a good backup strategy for all the databases, so you can protect and restore your data without bringing the system offline or halting queries or updates.
Using the High availability features for the databases will give you the benefit of always-on databases.
Disaster recovery planning should be ready for your databases as well as servers. Use SAN for the backups of the databases with the limited user access you can encrypt your backups too.
SQL Server Always-On - Primary Node can be used for transactions and 2 Secondary Servers can either used as read-only or just a Node. The always-on feature ensures database availability using automatic failover.
Database systems often face issues on high Memory, CPU, and low HDD space. Develop custom scripts for making alerts if they hit with the maximum/minimum threshold, using a trusted monitoring app on the databases will be an advantage as they build the application with every aspect of the databases.
Execution plans are extremely helpful to tune the queries of the databases, the database engine will provide a missing index suggestion with the impact of the, you can also check the index seek and index scan option for the existing indexes of the databases.
Make sure you are monitoring the query performance for newly developed queries on the databases.
Check for the actual and estimated execution plans of the queries, it will help to tune the long-running queries.
Work closely with the Application developer and the SQL developer to minimize the query development, work with the SAN Admin and the sysadmins for the Server performance issues.
- Focus on data quality:
When data suffers from poor quality both the business and its customers can suffer. Limiting your data to only the necessary information your company needs to meet its goals is a great way to improve data quality, make sure you are collecting clean and reliable data every time.
There may be many heterogeneous resources for the ETL there should be a mid-step for Staging the data and cleaning the data before it proceeds to the production system.
Making sure the data is checked and cleaned before it gets used in any analytics or reporting services to improve the accuracy of all the requirements. Data quality should be the top priority and it helps to keep all aspects of your organization’s data use clean and reliable.
- Use trusted Apps:
While dealing with the ETL or the large volume of data, use trusted apps that deal with interaction with the database or Server. Keep third-party applications to a minimum. Third-party apps could be a threat to the database, unless they are necessary, don’t install them.
Before you decide whether to use trusted apps, you should use it to the DEV systems to make sure it works well, every third-part apps require permission to communicate over the database systems, keep the minimum permissions and use a separate login for it.
Use the app only for the specific data retrieval, do not make a dependency over the third-party apps for modification of the data.
Documentation is as essential as primary keys. Take care to document the design, entity-relationship schemas, and triggers and the database objects for future users.
Server information with database logs, audit documents, incidents/Change control documents are some of the best parts to document.
Preparing the documentation is a common source to be used by all players within the scene. Documentation will make it easy to set up, operate, and maintain the overall system.
About the Author
Avinash Lad, Sr. Software Engineer – ADM
Avinash is a Senior Software Engineer who works as a database professional (MCSA: SQL Server 2012/14) with more than 7 years of experience and has a Bachelor’s Degree in Computer Science. He has focused on database administration, design, development, performance tuning and optimization, high availability solutions, and Data-Warehouse design and development.