It's All About the Database

by Dave Keeshin


June 21, 2021


OLTP 2.0


 

I developed the following concept as a follow up to my last post covering open source software Linux, PostgreSQL, GO (the programming language) and gRPC. Also mentioned here, is proof-of-concept code that I recently built and is now on GitHub.

CONCEPT

Using best of breed, open-source components, design a framework for building an open source, peer-to-peer OLTP “network of databases”.

 

A “Database Everywhere” APPROACH

Each peer has its' own database --part of a data-event-driven, permissioned network of databases for near real time use.

 

FRAMEWORK

Treat each database transaction as an asynchronous message.

Achieve reasonable and eventual data consistency.

Factor distances and speeds between peers into the design.

Use regional hubs to balance performance, security, and monitoring.

Keep data sets small.

Borrow from the blockchain, make transactions immutable, AKA 'inserts only'.

Make it easy to understand, use, maintain, and customize.


 

USE CASES

Anything that needs near real time high-performance, data management like trading systems, B2B E-Commerce, payments, blockchains, data vaults, etc.

 

PROOF OF CONCEPT CODE

I developed the following proof-of-concept code on GitHub. It demonstrates using a database transaction as an asynchronous message. It is a simple approach using a PostgreSQL database, its' asynchronous messaging features, and some GO programming code. The message is sent over a gRPC connection to a destination database.

REFERENCES

Developing the OLTP 2.0 concept, I reviewed a lot of data management and programming methods, systems, and techniques. Some old, some new. The reference links below reflect the ones I reviewed--especially those listed under these categories:

Interestingly, some approaches seem backwards. Instead of "faster, better and cheaper" we are getting "slower, more complicated and expensive". It is hard to think we really need that--but more about that it in a future post.

LOOKING FORWARD

OLTP 2.0 is a concept worth developing. It is a practical, creative use of “best of breed” methods and technologies. The demo code on GitHub is a seed that hopefully can continue to grow.

To help that, I joined Github Sponsors. It is a framework for supporting open-source developers and bringing sponsorship to the community. To date, my company kDS, LLC has funded this research. I have spent a great amount of time and resources to get to this point and am confident it is an important direction that will make a difference. If your organization supports open-source initiatives or is looking for an opportunity to get involved, please consider a level of sponsorship. It is a win-win for organizations that need to research and develop their data technology future.

And it looks like the future is here.

Thanks for visiting.


Leave a Comment:

* Required

Here are reference categories to links I use to write this blog and previous ones.

Asynchronous Messaging

A Guided Overview of Azure Service Bus - DZone Cloud
AMQP Video
Azure Event Grid: The Whole Story - Microsoft Azure - Medium
Azure event ingestion with Event Hub, Data Lake and SQL Database
Azure Functions and Event Hubs: Optimising for Throughput
Azure Functions with SQL
Azure Quickstart - Create an event hub using the Azure portal
Azure Service Bus - suspend messaging entities
Azure Service Bus access control with Shared Access Signatures
Azure Service Bus diagnostics logs
Azure Service Bus message sessions
Azure Service Bus Messaging Deep-Dive Video
Azure Service Bus Session Enabled Message Processing
Azure Service Bus to Event Grid integration overview
Azure Service Bus—Cloud Messaging Service
Best practices for improving performance using Azure Service Bus
Choosing the right Azure messaging service for your data
Clients Libraries and Developer Tools RabbitMQ
Compare Azure messaging services
Event Hubs ingestion performance and throughput
Everything You Need to Know About Azure Service Bus Brokered Messaging
How to install Service Bus Explorer Coding Azure
Introducing Windows Azure Service Bus for Visual Studio Developers Video
Introduction - Learn
Introduction to ASP.NET Core SignalR
JeremyLikness/build-event-grid: Event Grid publisher and consumer example
Messaging in Azure: Event Hubs, Service Bus, and Relay Video
Messaging with Azure Service Bus - Part 4 - Sending and Receiving Messages
Microsoft.Azure.ServiceBus Namespace - Azure for .NET Developers
New-AzServiceBusQueue (Az.ServiceBus)
Playing with Azure Event Hub - DZone Cloud
Processing 100,000 events per second on Azure Functions
Quickstart - Use the Azure portal to create a Service Bus queue
Quickstart: Send custom events to Azure Function - Event Grid
Quickstart: Send custom events to web endpoint - Event Grid, Azure portal
Quickstart: Send custom events to web endpoint - Event Grid, PowerShell
Quickstart: Send custom events with Event Grid and Azure CLI
Remove-AzureRmServiceBusQueue (AzureRM.ServiceBus)
Routing Azure Event Grid Events to a Service Bus Queue Made of Strings
Send or receive events from Azure Event Hubs using .NET (latest)
Sending custom events to Azure Event Grid
Sending Custom Events To Azure Event Grid
SendingCustomEventsToEventGrid
Service Bus Explorer 2.6 now available! Paolo Salvatori's Blog
ServiceBusExplorer
Throttling Calls to Azure Functions from Azure Service Bus
Transactional messaging with Azure Functions and Service Bus
Tutorial: Send Event Hubs data to data warehouse - Event Grid
Understanding Azure Events and Messages: Azure Service Bus, Event Grids and Event Hubs
Update retail inventory using publish/subscribe with Azure PowerShellUse Azure PowerShell to create a Service Bus queue
Use PowerShell to manage Azure Service Bus resources
What Is Pub/Sub?

Azure

.NET Core Service Bus Message in Session Enabled Subscription
10 Differences between Azure Functions and Logic Apps
Accelerate Your Business with Azure Content Delivery Network
Adventures with Azure: Cosmos DB, Azure Functions, Event Grid, Oh My
Alexandre Nedelec - Good bye Azure Portal, Welcome Azure CLI
Automate function app resource deployment to AzureAzure 4 Everyone - YouTube
Azure API Management and Application Gateway integration
Azure Databricks Introduction - YouTube
Azure Event Grid Tutorial - YouTube
Azure Functions and Logic Apps with some comparison/A>
Azure Functions writes Service Bus messages to Azure Table Storage
Azure Pricing Calculator - Estimate your bill
Azure Service Bus bindings for Azure Functions
Azure SQL Cross Database Query
Azure Web Sites: Strings and Connection Strings Work
Configuring the Azure SQL Database Firewall
Connect Azure Functions to Azur Storage - VStudio Code
Connect to SQL Server or Azure SQL Database - Azure Logic Apps
Connectors for Azure Logic Apps - Azure Logic Apps
Create your first function in Azure using Visual Studio
Create your first serverless function from the Azure portal
Dapper Dapper Tutorial | Dapper Tutorial and Documentation
DataStax and Microsoft
Define your naming convention - Cloud Adoption Framework
Design for security in Azure
Directory of Azure Cloud Services
Document use of connection strings in local.settings.json Azure/Azure-Functions
Exchange messages with Azure Service Bus - Azure Logic Apps
Expose your functions with OpenAPI using Azure API Management
How to Configure Windows Authentication for SQL Server on Linux?
How to use batching to improve application performance - Azure SQL
Microsoft Cloud Adoption Framework for Azure documentation - Cloud Adoption Framework
Ordered queue processing in Azure Functions with Sessions - DEV
PartsUnlimited : Deploy and Configure Azure Resources with ARM Templates
Prepare for cloud adoption - Microsoft Cloud Adoption Framework for Azure
Prevent unexpected costs and manage billing in Azure
Pricing Calculator
Real-time fraud detection using Azure Stream Analytics
Recommended naming and tagging conventions
Scaling Azure Functions - 500K Requests to Weather.com in Under 3 Minutes
Serialize JSON to a file
Store and read connection string in appsettings.json - ConnectionStrings.com
System.Text.Json Namespace
Using SQL Server for Latitude & Longitude Calculations Chris Bitting
What is Azure Event Hubs? - a Big Data ingestion service
What is Azure role-based access control (Azure RBAC)?
When to Use Logic Apps and Azure Functions - DZone Cloud
Work with Azure Functions Core Tools










gRPC

About APIs
Benefits and Best Practices of Adopting GRPC - XenonStack
Choosing a stream processing technology - Azure Architecture Center
Create a .NET Core gRPC client and server in ASP.NET Core
Create A To Do App With Blazor Web Assembly And gRPC
Demystifying gRPC: A brief history of Remote execution. - Scala
Duplex gPRC - CodeProject
Enable HTTP/2 in Azure App Service Paris Polyzos' blog
GitHub - TopSwagCode/AspNetCore.GRPC
go - How to broadcast in gRPC from server to client?
Google's gRPC: A Lean and Mean Communication Protocol for Microservices
gRPC A high-performance, open source universal RPC framework
gRPC Basics - DZone Microservices
gRPC-Web for .NET now available
How to implement gRPC in ASP.NET Core
Guaranteed Delivery with gRPC Streams
How to implement gRPC in ASP.NET Core
How to Use gRPC to Build Efficient .NET Core 3.1 Microservices
Introduction to gRPC
Is gRPC the Future of Client-Server Communication?
Kafka with AVRO vs., Kafka with Protobuf vs...
Language Guide (proto3)
Server streaming with .NET Core gRPC service · Fabio Cozzolino {blog}
Server Streaming with gRPC and .NET Core - Steve Gordon - Code with Steve
Upgrade WCF to gRPC - Visual ReCode
Building high-performance gRPC Microservices ...
Using gRPC-Web with Blazor WebAssembly
What is AES encryption (with examples) and how does it work?
What is SSL, TLS? And how this encrypton protocol works
What is TLS encryption and how does it work? | Comparitech
When to Use What: REST, GraphQL, Webhooks, & gRPC | Nordic APIs |



PostgreSQL

An example todo app using gRPC/REST and PostgresQL in a few lines of code
Asynchronous Notifications in Postgres
Building a distributed time-series database on PostgreSQL
CockroachDB vs PostgreSQL - A quick database comparison
Connect Postgres to Active Directory for Authentication | strongDM
Go, NATS, gRPC and PostgreSQL clean architecture microservice...
GORM Guides - The fantastic ORM library for Golang, aims to be developer friendly.
How do I create a linux cron job to run an postgres SQL function?
How To Add Jobs To cron Under Linux or UNIX - nixCraft
How to Backup and Restore PostgreSQL Database on Windows
How to Create a Database Backup Scheduler Script - DZone Database
How to Import a Json File into PostgreSQL
How to Install PgAdmin 4 Debian 10
How to install pgAdmin 4 on Linux Mint
How to print debug comments in Postgres
How to Replicate PostgreSQL Data to Remote Sites
How to run an SQL file in Postgres | ObjectRocket
How to Set Up a Cron Job in Linux?
How to use .pgpass in PostgreSQL? | TablePlus
IBM/fabric-postgres-wallet: Demonstrate the methodology to use Postgre SQL Database as a Fabric Wallet
Import Data from CSVs in Postgres - YouTube
Install PostgresQL in Ubuntu
Installation of PostgreSQL and PgAdmin 4 on Linux Mint - YouTube
Introduction to PostgreSQL physical storage
Job automation in Linux Mint for beginners 2019 - Softhints
Listening to generic JSON notifications from PostgreSQL in Go
Local Development Set-Up of PostgreSQL with Docker
Managing PostgreSQL Replication
Microsoft SQL Server (MSSQL) vs. PostgreSQL Comparison
otoolep/go-grpc-pg: Simple service exposing a gRPC interface, with a connection to PostgreSQL on the backend
Postgres stored procedures and functions
Postgres String to Date and Timestamp | Blendo
postgresql - pg_dump postgres database from remote server - blocked port
PostgreSQL CREATE PROCEDURE By Examples
PostgreSQL CREATE TRIGGER Statement By Practical Examples
PostgreSQL database backup in Linux
PostgreSQL LISTEN/NOTIFY
PostgreSQL: About
PostgreSQL: Bash Shell Script to execute psql command in UNIX/LINUX
PostgreSQL: Documentation: 12: pg_dump
PostgreSQL: File Browser
psql-api npm
Simple API backed by PostgresQL, Golang and gRPC
Syncing Active Directory users and groups to PostgreSQL
The Basics Of PostgreSQL UUID Data Type
The Ultimate Guide to PostgreSQL Date By Examples
Tutorial PostgreSQL - LDAP Authentication on Active Directory

Scripting

15 Ways to Bypass the PowerShell Execution Policy
about_Functions_CmdletBindingAttribute - PowerShell
about_Quoting_Rules - PowerShell
Automate SSRS Report Generation using PowerShell
Build Your Own PowerShell Cmdlet
Creating complex JSON with Powershell
Date and Time formats - PowerShell - SS64.com
dbatools – best practices and instance migration module
DTEXEC Command Line Parameters Using Command Files
dtexec Utility
Handling-errors-in-sql-server-2012
How to Map Network Drives From the Command Prompt in Windows
How to pass in parameters to a sql server script sqlcmd
How to Run a PowerShell Script from Batch File
How to run a Powershell script from the command line...
MS-DOS dir command help
PowerShell advanced functions the CmdletBinding...
Powershell File Reading Options
PowerShell For Loop, For Each-Object Loop & Other Loops - business.com
PowerShell to Discover, Diagnose, and Document SQL Server
PowerShell: array type
Powershell: Everything you wanted to know about arrays
Powershell: Everything you wanted to know about hashtables
PowerShell: Querying, Formatting and Exporting Tags
Powershell: Variable substitution Strings
Robocopy "Robust File Copy"
Run PowerShell scripts in SSIS
Running Windows PowerShell Scripts
Search XML files with PowerShell using Select-XML
Send-MailMessage: Sending Email with PowerShell v5.1 [Tutorial]
Setting the PowerShell Execution Policy
SQL Full Outer Join
SQL Server Common Table Expressions (CTE) Basics
SQL Server Cross Apply and Outer Apply
SQL Server SQLCMD Basics
Understanding PowerShell Begin, Process, and End blocks
Understanding PowerShell Begin, Process, and End blocks 4sysops
Use PowerShell to Change SQL Server Service Accounts
Use PowerShell to Explore Nested Directories and Files
Use PowerShell to Find Metadata from Photograph Files
Use Windows PowerShell to search for files | Scripting Blog
Using PowerShell scripts from Bash Jamie Phillips
windows - How to run a PowerShell script?
Windows Azure SQL Database Management with PowerShell
Working with JSON data in PowerShell | Scripting Blog