Data centric application is a software system in which the database play a significant role in the application architecture. For building such an application we use two tire or three tire architecture.
To design a data centric application the architect will design the database first. Once the database has a design model, one or more software developers will create scripts and programs for the database.
Design elements must include tables, relations between tables, validation rules, domains, triggers and stored procedure requirements. This design is usually done using ER diagrams with a program that can be provided by the database vendor.
Data centric applications can use a relational database or a document oriented database. If the programs for the databases are written as stored procedures there is a native manipulation of the data inside the database. When data manipulation is performed using an external program then there is a data transfer between the database and the program.
A relational database is a collection of data items organized as a set of tables from which data can be accessed or reassembled in many different ways using SQL language. A relational database is usually normalized.
These are preffered databases for most applications. Architects preffer to use quality components in the application architecture to create a robust system. Relational databases are robust have good performance and are secure. Since the database can be a single point of failure for the entire system a reliable database is the key for having the system function properly with no intreruption.
Here are some relational databases:
- Microsoft SQL Server
Data Oriented Languages
Most of computer languages are general purpose language. However for data centric applications there are specific dedicated languages. Every relational database has a different language.
- PL/SQL – for Oracle database
- pgSQL – for posgreSQL database
- Transact-SQL – for Microsoft SQL server database
- Microsoft Access
Other data scientific languages:
- R Programming Language
- Julia programming Language
In computer science there are Object Oriented Languages like Java, C++, Python and other languages that can have a data model created in memory using classes. Relational databases can have a different data model using relational tables. The two model are not matching perfectly and there is an “impedance mismatch” that need an adapter to function. This adapter is called Obect Relational Mapping (ORM) application.
See also: Object-relational mapping
For most popular computer languages there are available several ORM frameworks available for architects to choose from. For example Java has Hibernet, TopLink and Athena Framework.
You can find detailed list on wikipedia: ORM Software
The ORM software is a key in data centric applications. Many applications ahve a bottelneck that is the ORM. Therefore is a good ideea to avoid impedance mismatch and use a disruptive technology to do so.
To Avoid Impedance Mismatch we can use 3 different techniques.
- Store data as complex objects using an Object Oriented database
- Store data as documents using JSON notation into document oriented databases
- Use data – oriented computer languages that are not object – oriented.
This is a database management system in which information is represented in the form of objects as used in object-oriented programming. Object databases are different from relational databases which are table-oriented.
Object oriented databases are
Some of these databases I can enumerate:
JADE has it’s own computer language named JADE.
ObjectDB is a popular Java Object Oriented database.
Gemstone is programable using SmallTalk.
Also known as NoSQL databases or Big Data databases. These databases are storing information into a JSON format. This is unstructured data or document oriented data. Each record can have it’s own structure. Data and structure are stored into a collection of documents.
- HBase (Hadoop)
Hybrid databases use both approaches. Can use Object-Oriented design or NoSQL design. Developers can design relational tables but can also create complex objects and document oriented tables.
- IBM Informix
Using a hybrid database or an object oriented database your application can have an improved performance of up to 100 or even 1000 times faster then a classic design using R-DBMS database.
Communication and User Interface
A data-centric application must communicate with the client application. Depending on the client a data-centric application can use a native data protocol or micro-services. Some databases have tools that can create micro-services automatically and expose functions to read and write data into databases.
The most common approach is to use a database driver for example ODBC or JDBC driver. Some databases provide native drivers for C/C++ and other computer languages. In this case the application will send SQL and will receive data packages.
Most of the time an Architect must design the interface for the database. This include the protocol and the data format for data exchange. Data protocol for communication can be XML based or JSON based for services.
There are diverse types of applications that can be connected to a database.
- Internal stored procedures
- Batch processing applications
- Jobs scheduled applications
- Desktop applications with dedicated user interface
- Universal tools having standard user interface
- Web based user interface or APP
- Mobile APPS
All these applications are named OLTP applications. (On-line Transactional Processing)
Sometimes a data-centric application has a role of backup or history. In this case the database in an OLAP database or on-line Analytical Processing Applications. These kind of applications are becoming obsolete and are replaced by Big Data Analytic applications.
See also: Data-centric Architecture