This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dido:public:s_cli:05_contents:01_prt:02_basics:02_solstack:dbstack:start [2021/07/30 13:31] murphy |
dido:public:s_cli:05_contents:01_prt:02_basics:02_solstack:dbstack:start [2021/09/30 14:11] (current) nick |
||
|---|---|---|---|
| Line 2: | Line 2: | ||
| [[dido:public:s_cli:05_contents:01_prt:02_basics:start| Return to DIDO CLI Background]] | [[dido:public:s_cli:05_contents:01_prt:02_basics:start| Return to DIDO CLI Background]] | ||
| - | At the heart of Database Solution Stack is a Database Platform. In this case the Database platform is one of the many RDBMS products, such as Oracle, PostgreSQL, MySQL, SQLServer etc. However, in this stack, the DBMS does not necessarily need to be an RDBMS as long as there is an interface to the database that uses SQL. The Boundaries of the Database Platform are not rigid. For example, Microsoft offers a single ODBC interface for many databases, consequently the ODBC driver may or may not be part of the Database Platform. However, in the big picture what is in the Platform and what is not in the platform is a bit pedantic. | + | At the heart of [[dido:public:ra:xapend:xapend.a_glossary:d:database]] [[dido:public:ra:xapend:xapend.a_glossary:s:solutionstack|Solution Stack]] is a Database [[dido:public:ra:xapend:xapend.a_glossary:p:platform|Platform]]. In this case the Database platform is one of the many RDBMS products, such as [[dido:public:ra:xapend:xapend.a_glossary:o:oracle|Oracle]], PostgreSQL, MySQL, SQLServer etc. However, in this stack, the DBMS does not necessarily need to be an RDBMS as long as there is an [[dido:public:ra:xapend:xapend.a_glossary:i:interface|interface]] to the database that uses [[dido:public:ra:xapend:xapend.a_glossary:s:sql|SQL]]. The Boundaries of the Database Platform are not rigid. For example, Microsoft offers a single ODBC interface for many databases, consequently the ODBC driver may or may not be part of the Database Platform. However, in the big picture what is in the Platform and what is not in the platform is a bit pedantic. |
| <figure> | <figure> | ||
| Line 11: | Line 11: | ||
| The following is a brief description of each component in the DBMS Stack. Note, these components are normative in nature and each DBMS may be slightly different. On the left side of the diagram there is a key that describes which tier each component is generally found in. | The following is a brief description of each component in the DBMS Stack. Note, these components are normative in nature and each DBMS may be slightly different. On the left side of the diagram there is a key that describes which tier each component is generally found in. | ||
| - | * **[[dido:public:ra:xapend:xapend.a_glossary:a:application|Application]]** - The application is the application, program, utility, service or microservice that needs to interact with the RDBMS. This is done using standardized [[dido:public:ra:xapend:xapend.a_glossary:d:ddl]] or Data Manipulation Language textual commands that adhere to the SQL specifications See: [[dido:public:ra:xapend:xapend.b_stds:tech:iso:dblang-sql-part1]] and related specifications. | + | * **[[dido:public:ra:xapend:xapend.a_glossary:a:application|Application]]** - The application is the application, program, utility, service or microservice that needs to interact with the RDBMS. This is done using standardized [[dido:public:ra:xapend:xapend.a_glossary:d:ddl]] or [[dido:public:ra:xapend:xapend.a_glossary:d:dml]] textual commands that adhere to the SQL specifications See: [[dido:public:ra:xapend:xapend.b_stds:tech:iso:dblang-sql-part1]] and related specifications. |
| - | * **Users** - And end user can enter SQL compliant DDL or DML text commands into a terminal or even produce scripts that contain as series of commands that sent to the Open Database Connectivity [dido:public:ra:xapend:xapend.a_glossary:a:api|API]] for processing. Just as with the Application, these commands need to be compliant with the SQL Standard See: [[dido:public:ra:xapend:xapend.b_stds:tech:iso:dblang-sql-part1]]. | + | * **Users** - And end user can enter SQL compliant DDL or DML text commands into a terminal or even produce scripts that contain as series of commands that sent to the [[dido:public:ra:xapend:xapend.a_glossary:o:odbc|Open Database Connectivity]] [[dido:public:ra:xapend:xapend.a_glossary:a:api|API]] for processing. Just as with the Application, these commands need to be compliant with the SQL Standard See: [[dido:public:ra:xapend:xapend.b_stds:tech:iso:dblang-sql-part1]]. |
| * **Open Database Connectivity API** - This a utility (i.e., usually a library) that the application calls to process the SQL commands and check for validity and verification that the commands are correct. Examples of an Open Database Connectivity. See [[dido:public:ra:xapend:xapend.a_glossary:o:odbc]] and [[dido:public:ra:xapend:xapend.a_glossary:j:jdbc]]. | * **Open Database Connectivity API** - This a utility (i.e., usually a library) that the application calls to process the SQL commands and check for validity and verification that the commands are correct. Examples of an Open Database Connectivity. See [[dido:public:ra:xapend:xapend.a_glossary:o:odbc]] and [[dido:public:ra:xapend:xapend.a_glossary:j:jdbc]]. | ||
| - | * **Data Definition Language (DDL)** - The [[dido:public:ra:xapend:xapend.a_glossary:d:ddl]] is used to create and modify the structure of database objects in a database. These database objects include views, schemas, tables, indexes, etc. Often, the DDL commands require a differen set of privileges than the Data Manipulation Language (DML). | + | * **Data Definition Language (DDL)** - The [[dido:public:ra:xapend:xapend.a_glossary:d:ddl]] is used to create and modify the structure of database objects in a database. These database objects include views, schemas, tables, indexes, etc. Often, the DDL commands require a different set of [[dido:public:ra:xapend:xapend.a_glossary:p:privileges|privileges]] than the Data Manipulation Language (DML). |
| * **Data Manipulation Language (DML)** - The [[dido:public:ra:xapend:xapend.a_glossary:d:dml]] includes commands permitting users to manipulate data in a database. This manipulation involves inserting data into database tables, retrieving existing data, deleting data from existing tables, modifying existing data and associated data from different tables together. DML is mostly incorporated in SQL databases. | * **Data Manipulation Language (DML)** - The [[dido:public:ra:xapend:xapend.a_glossary:d:dml]] includes commands permitting users to manipulate data in a database. This manipulation involves inserting data into database tables, retrieving existing data, deleting data from existing tables, modifying existing data and associated data from different tables together. DML is mostly incorporated in SQL databases. | ||
| - | * **DBMS Drivers** - [[dido:public:ra:xapend:xapend.a_glossary:d:dbdriver]] is s a computer program that implements a protocol ([[dido:public:ra:xapend:xapend.a_glossary:o:odbc]] or [[dido:public:ra:xapend:xapend.a_glossary:j:jdbc]]) for a database connection. | + | * **DBMS Drivers** - [[dido:public:ra:xapend:xapend.a_glossary:d:dbdriver]] is s a computer program that implements a [[dido:public:ra:xapend:xapend.a_glossary:p:protocol|protocol]] ([[dido:public:ra:xapend:xapend.a_glossary:o:odbc]] or [[dido:public:ra:xapend:xapend.a_glossary:j:jdbc]]) for a database connection. |
| * **Database Management System** - [[dido:public:ra:xapend:xapend.a_glossary:d:dbms]] is a software package designed to define, manipulate, retrieve and manage data in a database. A DBMS generally manipulates the data itself, the data format, field names, record structure and file structure. It also defines rules to validate and manipulate this data. | * **Database Management System** - [[dido:public:ra:xapend:xapend.a_glossary:d:dbms]] is a software package designed to define, manipulate, retrieve and manage data in a database. A DBMS generally manipulates the data itself, the data format, field names, record structure and file structure. It also defines rules to validate and manipulate this data. | ||
| * **SQL Command Line Interpreter (CLI)** - The SQL Command Line Interpreter translates the tokenized SQL commands into DB Specific instructions. | * **SQL Command Line Interpreter (CLI)** - The SQL Command Line Interpreter translates the tokenized SQL commands into DB Specific instructions. | ||
| * **Database API** - DBMSs generally support APIs that allow a programmer to directly access a databases. For example, Oracle provides a Oracle C++ Call Innterface (OCCI) [[https://docs.oracle.com/en/database/oracle/oracle-database/18/adobj/oracle-c-cpp-call-interface-odci.html]]. PostgreSQL supports libpq++ as the C++ [[dido:public:ra:xapend:xapend.a_glossary:a:api|API]] to Postgres [[https://www.postgresql.org/docs/7.0/libpqplusplus.htm]] | * **Database API** - DBMSs generally support APIs that allow a programmer to directly access a databases. For example, Oracle provides a Oracle C++ Call Innterface (OCCI) [[https://docs.oracle.com/en/database/oracle/oracle-database/18/adobj/oracle-c-cpp-call-interface-odci.html]]. PostgreSQL supports libpq++ as the C++ [[dido:public:ra:xapend:xapend.a_glossary:a:api|API]] to Postgres [[https://www.postgresql.org/docs/7.0/libpqplusplus.htm]] | ||
| - | * **DB Configuration** - There are always two aspects to configuring a DBMS. The first is setting up the environment externally to the DBMS (i.e., downloading the software, running a wizard to install and configure the DB, etc). | + | * **DB Configuration** - There are always two aspects to configuring a DBMS. The first is setting up the environment externally to the DBMS (i.e., downloading the software, running a [[dido:public:ra:xapend:xapend.a_glossary:w:wizard|wizard]] to install and configure the DB, etc). |
| * **Data Definition** - A [[dido:public:ra:xapend:xapend.a_glossary:d:ddl]] is a computer language used to create and modify the structure of database objects in a database. These database objects include views, schemas, tables, indexes, etc. | * **Data Definition** - A [[dido:public:ra:xapend:xapend.a_glossary:d:ddl]] is a computer language used to create and modify the structure of database objects in a database. These database objects include views, schemas, tables, indexes, etc. | ||
| * **Data Manipulation** - A [[dido:public:ra:xapend:xapend.a_glossary:d:dml]] is a family of computer languages including commands permitting users to manipulate data in a database. This manipulation involves inserting data into database tables, retrieving existing data, deleting data from existing tables and modifying existing data. DML is mostly incorporated in SQL databases. | * **Data Manipulation** - A [[dido:public:ra:xapend:xapend.a_glossary:d:dml]] is a family of computer languages including commands permitting users to manipulate data in a database. This manipulation involves inserting data into database tables, retrieving existing data, deleting data from existing tables and modifying existing data. DML is mostly incorporated in SQL databases. | ||
| - | * **Datastore** - A data store is a repository for persistently storing and managing collections of data which include not just repositories like databases, but also simpler store types such as simple files, emails etc. ... A database is a series of bytes that is managed by a database management system (DBMS).[[https://en.wikipedia.org/wiki/Data_store]] | + | * **[[dido:public:ra:xapend:xapend.a_glossary:d:datastore|Datastore]]** - A data store is a repository for persistently storing and managing collections of data which include not just repositories like databases, but also simpler store types such as simple files, emails etc. ... A database is a series of bytes that is managed by a database management system (DBMS).[[https://en.wikipedia.org/wiki/Data_store]] |
| ===== Database Solution Stack Scenarios ===== | ===== Database Solution Stack Scenarios ===== | ||
| Line 37: | Line 37: | ||
| In this scenario, the Application accesses the Database [[dido:public:ra:xapend:xapend.a_glossary:p:platform]] using the Database provided API. This solution is very machine resource efficient since the Application uses code that is optimized to access a specific Database (i.e., Oracle, PostgreSQL, MySQL, SQLServer, etc.). However, all of the error recovery and testing for the code and any changes made to the underlying database schema rests on the application. | In this scenario, the Application accesses the Database [[dido:public:ra:xapend:xapend.a_glossary:p:platform]] using the Database provided API. This solution is very machine resource efficient since the Application uses code that is optimized to access a specific Database (i.e., Oracle, PostgreSQL, MySQL, SQLServer, etc.). However, all of the error recovery and testing for the code and any changes made to the underlying database schema rests on the application. | ||
| - | **Note:** This scenario makes it more difficult to migrate from one Database [[dido:public:ra:xapend:xapend.a_glossary:p:platform]] to another (sometimes referred to as vendor lock-in). In order to access the Database, the end user must use the Application. | + | **Note:** This scenario makes it more difficult to migrate from one Database [[dido:public:ra:xapend:xapend.a_glossary:p:platform]] to another (sometimes referred to as [[dido:public:ra:xapend:xapend.a_glossary:v:vendorlockin|vendor lock-in]]). In order to access the Database, the end user must use the Application. |
| ==== Scenario #2 ==== | ==== Scenario #2 ==== | ||