Monday, June 26, 2023

Database Management Overview

Keywords: Software development, Backend development, Database Management, DBLC, DDLC, Database design, Relational database, SQL, non-relational database, NoSQL, Database administrator, Database developer, skills, tools

·        Database Management is part of backend development that refers to the server-side of Software development, Database Management include:

o   Database Administration

o   Database Optimization

o   Data Security and Compliance

o   Database Development and Design

o   Data Analysis and Reporting

§  Database Life Cycle (DBLC):

o   Database Initial Study

o   Database Design

o   Implementation and Loading

o   Testing and evaluation

o   Operations

o   Maintenance and evolution

·        Database Development Lifecycle (DDLC):

o   Planning

o   Analysis

o   Design

o   Implementation

o   Testing

o   Maintenance

·        Database Design Types:

o   Conceptual Design: Database modeling is used to create an abstract database structure, which permits you to emphasize the big picture without getting into details

o   DBMS software selection

o   Logical Design: logical design translates the conceptual design into an internal model of the chosen DBMS. It specifies a high-level language, Tables, Entities, normalization, indexes, views, transactions, etc.

o   Physical Design: a relocation of the expected schema into the actual database structure, map the entities into tables, relationships to foreign keys, and unique identifiers to unique keys. Translating schemas into database structure requires creating partitions, indexes, constraints, access control, and implementing some business rule chat that could not be modeled earlier.

·        Database Design Goals:

o   Design for Performance:

§  The key to database and application performance is design, not tuning. While tuning is quite valuable, it cannot make up for poor design

§  design must start with an efficient data model, well-defined performance goals and metrics, and a sensible benchmarking strategy.

o   Design for Scalability

§  Scalability is the ability of a system to perform well as its load increases.

§  Load is a combination of number of data volumes, number of users, and other relevant factors

§  To design for scalability, you must use an effective benchmarking strategy, appropriate application development techniques (such as bind variables) and appropriate Database architectural features like shared server connections, clustering, partitioning, and parallel operations.

o   Design for Extensibility

§  Extensibility is the ease with which a database or database application accommodates future growth

§  The more extensible the database or application, the easier it is to add or change functionality with minimal impact on existing functionality.

§  Extensibility differs from forward compatibility (the ability of an application to accept data from a future version of itself and use only the data that it was designed to accept).

§  To maximize extensibility, you must design it into your database and applications by including mechanisms that allow enhancement without major changes to infrastructure.

o   Design for Security

§  Designing and implementing security policies to protect the data of an organization, users, and applications from accidental, inappropriate, or unauthorized actions

§  Creating and enforcing policies and practices of auditing and accountability for inappropriate or unauthorized actions

§  Creating, maintaining, and terminating user accounts, passwords, roles, and privileges

§  Developing applications that provide desired services securely in a variety of computational models, leveraging database and directory services to maximize both efficiency and ease of use

o   Design for Availability

§  Availability is the degree to which an application, service, or function is accessible on demand.

§  A system designed for high availability provides uninterrupted computing services during essential time periods, during most hours of the day throughout the year, with minimal downtime for operations such as upgrading the system's hardware or software

§  The main characteristics of a highly available system are: Reliability, Recoverability, Timely error detection and Continuous operation

o   Design for Portability

§  Design database should be highly portable across operating systems, platform, and Programming languages.

§  When developed and deployed on a database, the application can stay deployed on that database forever.

§  If the application is moved to another database, the visual component and application logic can move independently of the data logic in the stored procedures, which simplifies the move

o   Design for Diagnosability

§  Diagnosability means preventing, detecting, diagnosing, and resolving database problems

§  Problems include critical errors such as code bugs, metadata corruption, and customer data corruption.

§  The goals of the Diagnosability infrastructure are to detect problems proactively, limit damage and interruptions after a problem is detected, reduce the time required to diagnose and resolve problems

o   Design for Special Environments

§  Design for Data Warehouse (a relational database that is designed for query and analysis rather than for transaction processing).

§  Data warehouse includes Statistical analysis, Reporting, Data mining capabilities, Client analysis tools and Applications that manage the process of gathering data; transforming it into useful, actionable information; and delivering it to business users

§  Data warehousing systems Use many indexes, use some (but not many) joins, use denormalized or partially denormalized schemas and Have workloads designed to accommodate ad hoc queries and data analysis

§  Design for Online Transaction Processing (OLTP) (optimized for fast and reliable transaction handling)

§  OLTP systems Use few indexes, use many joins, use fully normalized schemas to optimize update, insert, and delete performance, and to guarantee data consistency and rarely use derived data and aggregates

o   Features for Special Scenarios

§  Special Scenarios such as SQL Analytic Functions, Materialized Views, Partitioning and Temporal Validity Support

§  A SQL analytic function computes an aggregate value based on a group of rows

§  A SQL analytic function differs from an aggregate function in that it returns multiple rows for each group

§  Examples for analytic functions include AVG, COUNT, MAX, MIN, SUM and so on

§  Materialized views are query results that have been stored ("materialized") as schema objects. Like tables and views, materialized views can appear in the FROM clauses of queries.

§  Materialized views are used to summarize, compute, replicate, and distribute data

§  Partitioning is the database ability to physically break a very large table, index, or materialized view into smaller pieces that it can manage independently

§  Partitioning is similar to parallel processing, which breaks a large process into smaller pieces that can be processed independently.

§  Temporal Validity Support lets you associate one or more valid time dimensions with a table and have data be visible depending on its time-based validity, as determined by the start and end dates or time stamps of the period for which a given record is considered valid.

·        Methods of data storage for applications

o   Relational databases (or SQL databases)

§  Stores data in tabular format with rows and columns.

§  The columns contain data attributes, and the rows have data values.

§  You can link the tables in a relational database to gain deeper insights into the interconnection between diverse data points.

o   Non-relational databases (or NoSQL databases)

§  Use a variety of data models for accessing and managing data.

§  They are optimized specifically for applications that require large data volume, low latency, and flexible data models, which is achieved by relaxing some of the data consistency restrictions of other databases.

·        Database Management Roles

o   Database Administrator (DBA)

o   Database Developer

·        Data Administrators (DBAs) Responsibilities:

o   Focuses on managing, securing, and overseeing the data storage systems of an organization.

o   Serve as the stewards of data integrity, ensuring that databases are accessible, performant, and safeguarded against breaches or loss.

o   With a deep understanding of database software and architectures, DBAs play a pivotal role in the seamless operation of data-driven applications and services.

o   Responsible for Installing and upgrading database server and application tools

o   Allocating system storage and planning future storage requirements for the database system

o   Implementing and maintaining database security, including user management and role assignment

o   Ensuring data recovery, backup, and restoration procedures are in place and effective

o   Monitoring and optimizing the performance of the database

o   Planning and executing the migration of databases to new technologies and platforms

o   Configuring, monitoring, and maintaining database replication and clustering

o   Working with database developers and IT project managers

·        Database Developers Responsibilities:

o   Focuses on design and develop databases that store, organize, and retrieve data efficiently

o   translating business needs into robust database solutions

o   architects of robust database systems, ensuring data integrity, security, and performance to meet the needs of users and applications

o   With a deep understanding of database languages like SQL, they design schemas, write queries, and develop stored procedures and functions

o   Monitoring and tuning database performance to maintain high levels of efficiency and reliability

o   Collaborating with Backend developers to integrate databases with applications and establish proper communication between systems

o   Implementing and maintaining database security measures to safeguard sensitive information

o   Conducting data migrations and upgrades to ensure databases remain up to date with technological advancements

·        Database Management Tools:

o   Database Systems: SQL Server, Oracle, MySQL, PostgreSQL,

o   Database Languages: T-SQL, PL/SQL, XQuery

o   Database Management Systems: SQL Server Management Studio (SSMS), Oracle SQL Developer, MySQL Workbench

o   NoSQL database: MongoDB, Oracle NoSQL Database, Apache Cassandra

o   Cloud-based database Services: AWS RDS, Azure SQL Database, and Google Cloud SQL