Common Sense Software Design
This diagram is a representation of a design approach I refer to as the Common Sense Software Design for RDBMS-backed type of software.
1) Service Class
Service class does stuff.
It is the complete feature implementation that fulfills functional requirements:
- Use parameters or requests to:
- Create database queries, either with SQL or ORM, and execute and retrieve the data.
- Call stored procedures or database functions, and retrieve the data.
- Process the database results and form results or responses.
Pseudo example:
class MyFeature(Database db /*, other dependencies*/)
+Common Sense Software Design - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Common Sense Software Design
This diagram is a representation of a design approach I refer to as the Common Sense Software Design for RDBMS-backed type of software.
1) Service Class
Service class does stuff.
It is the complete feature implementation that fulfills functional requirements:
- Use parameters or requests to:
- Create database queries, either with SQL or ORM, and execute and retrieve the data.
- Call stored procedures or database functions, and retrieve the data.
- Process the database results and form results or responses.
Pseudo example:
class MyFeature(Database db /*, other dependencies*/)
{
int ServiceMethod1(int p1, int p2)
{
diff --git a/blog/haters-build-software/index.html b/blog/haters-build-software/index.html
index e245c528..806948dc 100644
--- a/blog/haters-build-software/index.html
+++ b/blog/haters-build-software/index.html
@@ -1 +1 @@
-Haters Build Software - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Haters Build Software - Not Architectures
In all seriousness, and in my opinion - I don't think the goal of a software design should ever be to satisfy some particular architectural style.
I think that's nonsense, really do.
First and foremost, the primary goal is, of course, to satisfy your functional requirements.
The secondary goal is to achieve specific system attributes (also known as the "ilities" - look it up).
ility (plural ilities) (software engineering) An abstract quality that good software should exhibit. One reason to use software libraries is that the authors have had time to add ilities in addition to the basic functionality.
There are quite a number of these. In fact, Wikipedia says there are 80+ attributes your system may have.
That's a lot, but that's not the only issue.
Some ilities will be derived from your functional requirements. For example:
- High Availability. That's an architecturally significant requirement that is a feature that allows your users to accomplish their tasks.
- Scalability. Imagine you are building software in a football domain, and every two years during the Euro Cup and the World Cup, the number of concurrent users is *10,000 (at least). You need to plan and design for that scalability requirement, and again, that is a feature that will allow your users to accomplish their tasks (during those Cup games).
But that's not all.
Some "ilities" (or architecturally significant requirements to be academic about it) - are in direct contradiction with each other (or you can't have them all).
For example, you want high Maintainability (which implies Changeability and Flexibility), and you also want high Security.
Not happening.
Well, high Security assumes that you'll be introducing a couple of new layers of security; you want to have, of course, fine-grained user roles; of course, you'll need to have attached permission on those roles, permissions will have policies, and then you'll need to defined policies, perhaps on a row- level, then you need to think about row-level policy execution, etc., etc., and of course, you'll need a special and separate application that will manage all that, and finally, someone (meaning you) will have to maintain all of that, so much for maintainability.
And, finally, those "ilities" may apply to just one portion of a system, may depend on your environment, etc.
The point is that the goal of software architecture is not to achieve the pureness of a particular architectural style (Clean Architecture, for example).
Your goal should be to satisfy architecturally significant requirements (or "ilities") that are the result of careful and thorough analysis, so you may end up with a system that has specific system attributes you designed for.
That's a mouthful, but it is what it is, which brings me finally to the Clean Architecture (TM).
Correct me if I'm wrong, but according to Lindkein's posts and comments, the number one benefit of Clean Architecture is as follows:
- 𝗜𝗻𝗱𝗲𝗽𝗲𝗻𝗱𝗲𝗻𝗰𝗲 𝗳𝗿𝗼𝗺 𝗙𝗿𝗮𝗺𝗲𝘄𝗼𝗿𝗸𝘀: Clean Architecture doesn't tie you to specific tools or frameworks. This allows you to swap out database ORMs, web frameworks or libraries without impacting the core business logic.
... umm, I have questions ... 🤔
So basically, your "ilities" are already set for you; you don't have to do anything - regardless of your system's unique requirements.
And I need to figure out where even to start with this...
- Swapping databases. I've done it only once, like 15 years ago, and it was nerve-wracking. As far as I can see, that is the case with other people, too. Swapping databases is a very rare and extraordinary occurrence. But even that is always one RDBMS type for the other. I have never heard that someone swapped RDMBS for Docubase or Key-Value Storage just like that.
- Swapping ORM's. Well, the entire idea with ORMs is that they can abstract your RDBMS so that you can swap your RDBMS database more easily. And they do help in that regard, I admit. But swapping ORM? Lol, are you kidding me? I have heard only once in my career that there was a need to replace the ORM library, basically, some exotic ORM library became unsupported and needed to be replaced with the supported one. But that implied literally rewriting everything from the ground up. So, essentially, we should be able to swap the thing that allows us to swap the other thing. Got it.
- Swapping web frameworks. Now, this is just ridiculous. I'm not going to comment on that. Never even heard of such a thing.
Since I'm now considered as the "Clean Architecture" hater (ok, I admit, I am), and, also, I'm asked to provide an alternative, so here it is:
- Carefully and thoroughly analyze your system, your requirements, and your environment - to distill your architecturally significant requirements. Find out what your "ilities" are and prioritize them accordingly.
- Select the most appropriate database (PostgreSQL is always a good choice, but there are others like Snowflake, BigQuery, MariaDB, etc.) - and get the most out of it. You'll find out that are extremely powerful, capable, and feature-rich.
- Don't abstract it away because the architectural flavor of the day says so - do it instead because your "ilities" say so. And they rarely do. Otherwise, you'll be denied many of those powerful features.
I'm not in a business telling other people what to do, I'm in business telling computers what to do.
But I wanted to say this given the amount of discussions lately over the Clean Architecture.
To receive notifications about new posts and updates, consider subscribing to my LinkdIn page:
vb-software linkedin
You will receive notifications about new posts on your LinkedIn feed.Comments
\ No newline at end of file
+Haters Build Software - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Haters Build Software - Not Architectures
In all seriousness, and in my opinion - I don't think the goal of a software design should ever be to satisfy some particular architectural style.
I think that's nonsense, really do.
First and foremost, the primary goal is, of course, to satisfy your functional requirements.
The secondary goal is to achieve specific system attributes (also known as the "ilities" - look it up).
ility (plural ilities) (software engineering) An abstract quality that good software should exhibit. One reason to use software libraries is that the authors have had time to add ilities in addition to the basic functionality.
There are quite a number of these. In fact, Wikipedia says there are 80+ attributes your system may have.
That's a lot, but that's not the only issue.
Some ilities will be derived from your functional requirements. For example:
- High Availability. That's an architecturally significant requirement that is a feature that allows your users to accomplish their tasks.
- Scalability. Imagine you are building software in a football domain, and every two years during the Euro Cup and the World Cup, the number of concurrent users is *10,000 (at least). You need to plan and design for that scalability requirement, and again, that is a feature that will allow your users to accomplish their tasks (during those Cup games).
But that's not all.
Some "ilities" (or architecturally significant requirements to be academic about it) - are in direct contradiction with each other (or you can't have them all).
For example, you want high Maintainability (which implies Changeability and Flexibility), and you also want high Security.
Not happening.
Well, high Security assumes that you'll be introducing a couple of new layers of security; you want to have, of course, fine-grained user roles; of course, you'll need to have attached permission on those roles, permissions will have policies, and then you'll need to defined policies, perhaps on a row- level, then you need to think about row-level policy execution, etc., etc., and of course, you'll need a special and separate application that will manage all that, and finally, someone (meaning you) will have to maintain all of that, so much for maintainability.
And, finally, those "ilities" may apply to just one portion of a system, may depend on your environment, etc.
The point is that the goal of software architecture is not to achieve the pureness of a particular architectural style (Clean Architecture, for example).
Your goal should be to satisfy architecturally significant requirements (or "ilities") that are the result of careful and thorough analysis, so you may end up with a system that has specific system attributes you designed for.
That's a mouthful, but it is what it is, which brings me finally to the Clean Architecture (TM).
Correct me if I'm wrong, but according to Lindkein's posts and comments, the number one benefit of Clean Architecture is as follows:
- 𝗜𝗻𝗱𝗲𝗽𝗲𝗻𝗱𝗲𝗻𝗰𝗲 𝗳𝗿𝗼𝗺 𝗙𝗿𝗮𝗺𝗲𝘄𝗼𝗿𝗸𝘀: Clean Architecture doesn't tie you to specific tools or frameworks. This allows you to swap out database ORMs, web frameworks or libraries without impacting the core business logic.
... umm, I have questions ... 🤔
So basically, your "ilities" are already set for you; you don't have to do anything - regardless of your system's unique requirements.
And I need to figure out where even to start with this...
- Swapping databases. I've done it only once, like 15 years ago, and it was nerve-wracking. As far as I can see, that is the case with other people, too. Swapping databases is a very rare and extraordinary occurrence. But even that is always one RDBMS type for the other. I have never heard that someone swapped RDMBS for Docubase or Key-Value Storage just like that.
- Swapping ORM's. Well, the entire idea with ORMs is that they can abstract your RDBMS so that you can swap your RDBMS database more easily. And they do help in that regard, I admit. But swapping ORM? Lol, are you kidding me? I have heard only once in my career that there was a need to replace the ORM library, basically, some exotic ORM library became unsupported and needed to be replaced with the supported one. But that implied literally rewriting everything from the ground up. So, essentially, we should be able to swap the thing that allows us to swap the other thing. Got it.
- Swapping web frameworks. Now, this is just ridiculous. I'm not going to comment on that. Never even heard of such a thing.
Since I'm now considered as the "Clean Architecture" hater (ok, I admit, I am), and, also, I'm asked to provide an alternative, so here it is:
- Carefully and thoroughly analyze your system, your requirements, and your environment - to distill your architecturally significant requirements. Find out what your "ilities" are and prioritize them accordingly.
- Select the most appropriate database (PostgreSQL is always a good choice, but there are others like Snowflake, BigQuery, MariaDB, etc.) - and get the most out of it. You'll find out that are extremely powerful, capable, and feature-rich.
- Don't abstract it away because the architectural flavor of the day says so - do it instead because your "ilities" say so. And they rarely do. Otherwise, you'll be denied many of those powerful features.
I'm not in a business telling other people what to do, I'm in business telling computers what to do.
But I wanted to say this given the amount of discussions lately over the Clean Architecture.
To receive notifications about new posts and updates, consider subscribing to my LinkdIn page:
vb-software linkedin
You will receive notifications about new posts on your LinkedIn feed.Comments
\ No newline at end of file
diff --git a/blog/micro-orm/index.html b/blog/micro-orm/index.html
index 3ebbc24f..63ae0db3 100644
--- a/blog/micro-orm/index.html
+++ b/blog/micro-orm/index.html
@@ -1,4 +1,4 @@
-What is Micro ORM? - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
What is Micro ORM?
In software development, we all know very well what an ORM is:
A tool or usually a program library that implements object-relational mapping (ORM, O/RM), or O/R mapping.
This mapping is a two-way or bi-directional mapping:
- From the database to the database client (your application).
DB -> APP
Or, to be more specific: from the query results - to your application memory structures, such as object instances and other structures.
- From the database client (your application) to the database.
APP -> DB
Or, to be more specific: from the query and command programming constructs in your application language (such as C# Linq
command and queries) - to query that your database understands and can run such as SQL typically.
The best-known and most widely used ORM in the .NET ecosystem is, of course, the Microsoft Entity Framework, which is, of course, the full-blown ORM that implements wo-way (bi-directional) mappings.
On the other hand, the Micro ORM means it's just a lightweight mapper that maps only one way and one way only. From the query results - to your application memory structures, such as object instances and other structures.
Micro ORM is a term invented and popularized by Dapper, the best-known MicroORM built by Stackoverflow. In practice, that means that when using Micro ORM - all SQL has to be in a raw string command (a raw SQL). For example:
public class Film
+What is Micro ORM? - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
What is Micro ORM?
In software development, we all know very well what an ORM is:
A tool or usually a program library that implements object-relational mapping (ORM, O/RM), or O/R mapping.
This mapping is a two-way or bi-directional mapping:
- From the database to the database client (your application).
DB -> APP
Or, to be more specific: from the query results - to your application memory structures, such as object instances and other structures.
- From the database client (your application) to the database.
APP -> DB
Or, to be more specific: from the query and command programming constructs in your application language (such as C# Linq
command and queries) - to query that your database understands and can run such as SQL typically.
The best-known and most widely used ORM in the .NET ecosystem is, of course, the Microsoft Entity Framework, which is, of course, the full-blown ORM that implements wo-way (bi-directional) mappings.
On the other hand, the Micro ORM means it's just a lightweight mapper that maps only one way and one way only. From the query results - to your application memory structures, such as object instances and other structures.
Micro ORM is a term invented and popularized by Dapper, the best-known MicroORM built by Stackoverflow. In practice, that means that when using Micro ORM - all SQL has to be in a raw string command (a raw SQL). For example:
public class Film
{
public int FilmId { get; set; }
public string Title { get; set; }
diff --git a/blog/npgsqlrest-update1.6.2/index.html b/blog/npgsqlrest-update1.6.2/index.html
index 03f1705e..bbfadbd2 100644
--- a/blog/npgsqlrest-update1.6.2/index.html
+++ b/blog/npgsqlrest-update1.6.2/index.html
@@ -1,4 +1,4 @@
-NpgsqlRest Update 1.6.2 - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
NpgsqlRest 1.6.2 Update
I'm glad to see that the NpgsqlRest Nuget library is getting matured and refined. Here are some highlights from the changelog since version 1.4.0:
Strict Function Support
Functions in a strict mode (labeled as STRICT
or RETURNS NULL ON NULL INPUT
) are the functions that will always return NULL
if at least one of the parameters is NULL
. In that case, the function isn't even executed.
NpgsqlRest will not even try to execute strict functions when at least one of the parameters is NULL
. Instead, the call will return HTTP 204 NoContent
and bypass talking to the database altogether.
Command Callback
You can add a lambda callback that will receive a created data reader for the PostgreSQL function and the current HTTP context. If you choose to modify the HTTP response, the default behavior will be skipped in favor of your customized response.
For example, if we have some function that returns data, we can add a handler to render CSV instead of the default JSON response:
app.UseNpgsqlRest(new(connectionString)
+NpgsqlRest Update 1.6.2 - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
NpgsqlRest 1.6.2 Update
I'm glad to see that the NpgsqlRest Nuget library is getting matured and refined. Here are some highlights from the changelog since version 1.4.0:
Strict Function Support
Functions in a strict mode (labeled as STRICT
or RETURNS NULL ON NULL INPUT
) are the functions that will always return NULL
if at least one of the parameters is NULL
. In that case, the function isn't even executed.
NpgsqlRest will not even try to execute strict functions when at least one of the parameters is NULL
. Instead, the call will return HTTP 204 NoContent
and bypass talking to the database altogether.
Command Callback
You can add a lambda callback that will receive a created data reader for the PostgreSQL function and the current HTTP context. If you choose to modify the HTTP response, the default behavior will be skipped in favor of your customized response.
For example, if we have some function that returns data, we can add a handler to render CSV instead of the default JSON response:
app.UseNpgsqlRest(new(connectionString)
{
CommandCallbackAsync = async p =>
{
diff --git a/blog/npgsqlrest-v2/index.html b/blog/npgsqlrest-v2/index.html
index 080d6dd4..c0a459b8 100644
--- a/blog/npgsqlrest-v2/index.html
+++ b/blog/npgsqlrest-v2/index.html
@@ -1,4 +1,4 @@
-NpgsqlRest v2 Update 🐘🔥 - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
NpgsqlRest Version 2 Update 🐘🔥
NpgsqlRest
is .NET8 Nuget library for automatic REST API from PostgreSQL databases, implemented as .NET8 Middleware.- See the GitHub Readme file.
NpgsqlRest Version 2
is a major upgrade that introduces extendiblity with the concept of plugins..
There are two types of plugins:
- Routine Source Plugins
- Code Generation Plugins
Routine Source Plugins
Routine Source Plugins are plugins that define various sources - from which automatic REST API can be built.
For example, functions are stored procedures source is already built-in into the library and it has been since version 1.
With version 2, you can add the CRUD source plugin, published as a separate, plugin library NpgsqlRest.CrudSource. This plugin can generate automatic REST API for PostgreSQL tables and views, that can:
- Insert into tables and insertable views with or without conflict resolutions and with or without returning the inserted record (Create).
- Read data from tables and views using select operation and filtering by provided parameters (Read).
- Update data in tables and updateable views with or without returning updated data (Update).
- Delete data in tables and deletable views with or without returning deleted data (Delete).
See NpgsqlRest.CrudSource for more information.
Code Generation Plugins
Code Generation Plugins are plugins that are executed after the REST API has been defined and generated from the source. As such, they are used mostly for automatic generations of, well, more code.
Code Generation Plugins automatically generate code.
From the first version - there was always a feature that, based on generated REST APIs - could generate the HTTP Code File.
Those HTTP Code files are the REST Client files, with syntax based on the Visual Studio Code REST Client extension. These files can be used with Visual Studio Code or with the latest Visual Studio to test and run easily REST endpoints.
With version 2, the code generation interface is standardized and the HTTP Code Files functionality is moved to a separate plugin: NpgsqlRest.HttpFiles
Now, there are no more default code generators in the core library - they are all added through plugins as additional libraries.
Besides HTTP Code Files - there is also a Typescript Client Code Generator Plugin: NpgsqlRest.TsClient.
This plugin was created and developed to avoid writing tedious and boring Typescript code. Since REST API endpoints are now automatically generated - there is no reason not to generate API calls for the frontend in Typescript.
Short example of the part of the generated Typescript module:
interface IGetDuplicateEmailsResponse {
+NpgsqlRest v2 Update 🐘🔥 - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
NpgsqlRest Version 2 Update 🐘🔥
NpgsqlRest
is .NET8 Nuget library for automatic REST API from PostgreSQL databases, implemented as .NET8 Middleware.- See the GitHub Readme file.
NpgsqlRest Version 2
is a major upgrade that introduces extendiblity with the concept of plugins..
There are two types of plugins:
- Routine Source Plugins
- Code Generation Plugins
Routine Source Plugins
Routine Source Plugins are plugins that define various sources - from which automatic REST API can be built.
For example, functions are stored procedures source is already built-in into the library and it has been since version 1.
With version 2, you can add the CRUD source plugin, published as a separate, plugin library NpgsqlRest.CrudSource. This plugin can generate automatic REST API for PostgreSQL tables and views, that can:
- Insert into tables and insertable views with or without conflict resolutions and with or without returning the inserted record (Create).
- Read data from tables and views using select operation and filtering by provided parameters (Read).
- Update data in tables and updateable views with or without returning updated data (Update).
- Delete data in tables and deletable views with or without returning deleted data (Delete).
See NpgsqlRest.CrudSource for more information.
Code Generation Plugins
Code Generation Plugins are plugins that are executed after the REST API has been defined and generated from the source. As such, they are used mostly for automatic generations of, well, more code.
Code Generation Plugins automatically generate code.
From the first version - there was always a feature that, based on generated REST APIs - could generate the HTTP Code File.
Those HTTP Code files are the REST Client files, with syntax based on the Visual Studio Code REST Client extension. These files can be used with Visual Studio Code or with the latest Visual Studio to test and run easily REST endpoints.
With version 2, the code generation interface is standardized and the HTTP Code Files functionality is moved to a separate plugin: NpgsqlRest.HttpFiles
Now, there are no more default code generators in the core library - they are all added through plugins as additional libraries.
Besides HTTP Code Files - there is also a Typescript Client Code Generator Plugin: NpgsqlRest.TsClient.
This plugin was created and developed to avoid writing tedious and boring Typescript code. Since REST API endpoints are now automatically generated - there is no reason not to generate API calls for the frontend in Typescript.
Short example of the part of the generated Typescript module:
interface IGetDuplicateEmailsResponse {
email: string | null;
count: number | null;
}
diff --git a/blog/npgsqlrest/index.html b/blog/npgsqlrest/index.html
index 7fa88c8c..2a8d754f 100644
--- a/blog/npgsqlrest/index.html
+++ b/blog/npgsqlrest/index.html
@@ -1,4 +1,4 @@
-NpgsqlRest NuGet Library - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
NpgsqlRest NuGet Library
NpgsqlRest
is a .NET8 NuGet library that can build a RESTful API from the existing PostgreSQL routines (functions or procedures) with a single extension on a web application builder.
You can think of it as PostgREST
, but only for routines (functions or procedures), since PostgREST
is doing a lot more. It is implemented as .NET8 middleware so you can create custom builds, or integrate with your .NET8 projects, and it is highly customizable, with some unique features.
The library is AOT-ready, which means it can utilize .NET AOT feature to create self-contained, native binary executables, but more on that later.
Motivation
This is built to be a crucial part of the future low-code data platform based on PostgreSQL. And, as such it was built to satisfy very specific requirements (as opposed to catering to a wider audience). For example, it has two dependencies 1) the latest Microsoft.NET.Sdk.Web
that targets net8.0
framework. 2) the latest Npgsql
ADO.NET Data Provider for PostgreSQL (current version 8.0.1). Those dependencies will be updated with each new release. If you need to work with older versions, you need to either 1) update them in your project - or - 2) clone the NpgsqlRest
repository and make a custom build with downgraded dependencies.
Furthermore, future developments such as new features highly depend on the main project that will be using this library, but with the right sponsorship, anything is possible.
Features and Usage
Most basic usage in a standard .NET8 web application looks like this:
using NpgsqlRest;
+NpgsqlRest NuGet Library - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
NpgsqlRest NuGet Library
NpgsqlRest
is a .NET8 NuGet library that can build a RESTful API from the existing PostgreSQL routines (functions or procedures) with a single extension on a web application builder.
You can think of it as PostgREST
, but only for routines (functions or procedures), since PostgREST
is doing a lot more. It is implemented as .NET8 middleware so you can create custom builds, or integrate with your .NET8 projects, and it is highly customizable, with some unique features.
The library is AOT-ready, which means it can utilize .NET AOT feature to create self-contained, native binary executables, but more on that later.
Motivation
This is built to be a crucial part of the future low-code data platform based on PostgreSQL. And, as such it was built to satisfy very specific requirements (as opposed to catering to a wider audience). For example, it has two dependencies 1) the latest Microsoft.NET.Sdk.Web
that targets net8.0
framework. 2) the latest Npgsql
ADO.NET Data Provider for PostgreSQL (current version 8.0.1). Those dependencies will be updated with each new release. If you need to work with older versions, you need to either 1) update them in your project - or - 2) clone the NpgsqlRest
repository and make a custom build with downgraded dependencies.
Furthermore, future developments such as new features highly depend on the main project that will be using this library, but with the right sponsorship, anything is possible.
Features and Usage
Most basic usage in a standard .NET8 web application looks like this:
using NpgsqlRest;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
diff --git a/blog/pgroutiner/code-gen/index.html b/blog/pgroutiner/code-gen/index.html
index 48edf264..52f0c667 100644
--- a/blog/pgroutiner/code-gen/index.html
+++ b/blog/pgroutiner/code-gen/index.html
@@ -1,4 +1,4 @@
-PgRoutiner Code-Gen - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PgRoutiner Code-Gen
Data-Access Extensions
pgroutiner -r | --r | -rout | --rout | -routines | --routines
pgroutiner -r | --r | -rout | --rout | -routines | --routines
// pgroutiner auto-generated code
+PgRoutiner Code-Gen - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PgRoutiner Code-Gen
Data-Access Extensions
pgroutiner -r | --r | -rout | --rout | -routines | --routines
pgroutiner -r | --r | -rout | --rout | -routines | --routines
// pgroutiner auto-generated code
#pragma warning disable CS8632
#pragma warning disable CS8618
using System.Threading.Tasks;
diff --git a/blog/pgroutiner/concept/index.html b/blog/pgroutiner/concept/index.html
index 651e4047..475a935a 100644
--- a/blog/pgroutiner/concept/index.html
+++ b/blog/pgroutiner/concept/index.html
@@ -1,4 +1,4 @@
-PgRoutiner Concept - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PgRoutiner High-Level Concept
PgRoutiner is a command-line set of tools that work seamlessly with your NET project configuration in JSON files.
.NET projects usually have some configuration files, for example, appsettings.json
or appsettings.Development.json
or both. And usually, those files will contain a workable connection string. For example, they might look something like this:
{
+PgRoutiner Concept - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PgRoutiner High-Level Concept
PgRoutiner is a command-line set of tools that work seamlessly with your NET project configuration in JSON files.
.NET projects usually have some configuration files, for example, appsettings.json
or appsettings.Development.json
or both. And usually, those files will contain a workable connection string. For example, they might look something like this:
{
"ConnectionStrings": {
"MyConnection": "Server=localhost;Db=dvdrental;Port=5432;User Id=postgres;Password=postgres;"
},
diff --git a/blog/pgroutiner/database/index.html b/blog/pgroutiner/database/index.html
index 56206554..f443fad8 100644
--- a/blog/pgroutiner/database/index.html
+++ b/blog/pgroutiner/database/index.html
@@ -1,4 +1,4 @@
-PgRoutiner Database Management - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PgRoutiner Database Management
List Database Objects
pgroutiner -l | -ls | --ls | --list [ term ]
pgroutiner -l | -ls | --ls | --list [ term ]
Search Database Objects
pgroutiner -s | --s | --search [ term ]
pgroutiner -s | --s | --search [ term ]
View Database Object Definitions
pgroutiner -def | -ddl | --ddl | -definition | --definition [ name|names ]
pgroutiner -def | -ddl | --ddl | -definition | --definition [ name|names ]
PSQL Tool
pgroutiner -sql | -psql | --sql | --psql
pgroutiner -sql | -psql | --sql | --psql
Execution
pgroutiner -x | --x | -exec | --exec | -execute | --execute | --execute [ command|commands|script|dir ]
pgroutiner -x | --x | -exec | --exec | -execute | --execute | --execute [ command|commands|script|dir ]
Insert Scripts
pgroutiner -i | -ins | -inserts | --inserts [ table|tables|view|views|query|queries ]
pgroutiner -i | -ins | -inserts | --inserts [ table|tables|view|views|query|queries ]
Backup and Restore Helpers
pgroutiner --backup [ filename|name_pattern ]
pgroutiner --backup [ filename|name_pattern ]
pgroutiner --restore [ filename|name_pattern ]
pgroutiner --restore [ filename|name_pattern ]
Schema Files and Data Files
pgroutiner -sd | --schema-dump
+PgRoutiner Database Management - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PgRoutiner Database Management
List Database Objects
pgroutiner -l | -ls | --ls | --list [ term ]
pgroutiner -l | -ls | --ls | --list [ term ]
Search Database Objects
pgroutiner -s | --s | --search [ term ]
pgroutiner -s | --s | --search [ term ]
View Database Object Definitions
pgroutiner -def | -ddl | --ddl | -definition | --definition [ name|names ]
pgroutiner -def | -ddl | --ddl | -definition | --definition [ name|names ]
PSQL Tool
pgroutiner -sql | -psql | --sql | --psql
pgroutiner -sql | -psql | --sql | --psql
Execution
pgroutiner -x | --x | -exec | --exec | -execute | --execute | --execute [ command|commands|script|dir ]
pgroutiner -x | --x | -exec | --exec | -execute | --execute | --execute [ command|commands|script|dir ]
Insert Scripts
pgroutiner -i | -ins | -inserts | --inserts [ table|tables|view|views|query|queries ]
pgroutiner -i | -ins | -inserts | --inserts [ table|tables|view|views|query|queries ]
Backup and Restore Helpers
pgroutiner --backup [ filename|name_pattern ]
pgroutiner --backup [ filename|name_pattern ]
pgroutiner --restore [ filename|name_pattern ]
pgroutiner --restore [ filename|name_pattern ]
Schema Files and Data Files
pgroutiner -sd | --schema-dump
pgroutiner -sd | --schema-dump -sdf | --schema-dump-file [ schema filename ]
pgroutiner -sd | --schema-dump
pgroutiner -sd | --schema-dump -sdf | --schema-dump-file [ schema filename ]
pgroutiner -dd | --data-dump -dumplist [ object list ]
pgroutiner -dd | --data-dump -dumplist [ object list ] -ddf | --data-dump-file [ data dump filename ]
pgroutiner -dd | --data-dump -dumplist [ object list ]
diff --git a/blog/pgroutiner/documentation/index.html b/blog/pgroutiner/documentation/index.html
index e846d59e..87310452 100644
--- a/blog/pgroutiner/documentation/index.html
+++ b/blog/pgroutiner/documentation/index.html
@@ -1,3 +1,3 @@
-PgRoutiner Documentation - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PgRoutiner Documentation
pgroutiner -md --markdown
+PgRoutiner Documentation - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PgRoutiner Documentation
pgroutiner -md --markdown
pgroutiner -md --markdown -mdf --md-file [ md filename ]
pgroutiner -md --markdown
pgroutiner -md --markdown -mdf --md-file [ md filename ]
Example
PREVIOUSPgRoutiner Code-GenNEXTMORE ON PGROUTINERPgRoutiner Readme PgRoutiner Default Config PgRoutiner Blog PgRoutiner Concept PgRoutiner Database ManagementTo receive notifications about new posts and updates, consider subscribing to my LinkdIn page:
vb-software linkedin
You will receive notifications about new posts on your LinkedIn feed.Comments
\ No newline at end of file
diff --git a/blog/pgroutiner/index.html b/blog/pgroutiner/index.html
index abe79c15..236813a7 100644
--- a/blog/pgroutiner/index.html
+++ b/blog/pgroutiner/index.html
@@ -1 +1 @@
-PgRoutiner Blog - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PgRoutiner Blog
PgRoutiner is a set of command-line tools I created for fun and for my development needs while working on various .NET and PostgreSQL projects.
It integrates with .NET project configuration and allows you to do various stuff out of the box, no configuration needed. For example:
This is just one small example. PgRoutiner is incredibly feature-rich. As it happened, I was constantly adding new features as I was working on other projects. Initially, it was intended to be my personal code generator to relieve me of writing boring data-access code (calling a function and mapping the results, for example).
It was first published as the .NET Global Tool because that was, and still is - the most convenient and easiest way of managing different versions and updates, at least for me. I was really surprised to find out that, at the time of writing this blog, it had over 135K. That's, well, decent, but still not much. Note, while I was working on this blog series, it grew over 140K already.
However, I really didn't think anyone else would want to use it.
It was more of a fun experiment for me. It changed concepts a couple of times; it is loaded with features, and I thought it would be too complicated to be used by someone other than me. I guess I was wrong. I didn't even have time to properly finish the entire documentation, as you can see on the main readme file.
But I did create a nice presentation at one point. In any case, that won't stop me from blogging about it.
A few days ago, I did a migration of PgRoutiner to the new .NET8, and I wanted to try out how it works with the new NativeAOT Feature of the NET8. Native AOT is when we take our normal NET8 project, and we compile it to a native binary executable for the target OS.
AOT builds have very short, almost instantaneous startup times and are, in general, very optimized and fast.
It required some reconfiguration and some tweaking, and some parts had to be rewritten completely - but the final result blew me away: AOT build runs so fast that it is a completely different user experience. I can't go back to the normal .NET Tool after this.
If anyone wants to try it out, builds are on the GitHub release page.
So, what is it, and how it works?
See the PgRoutiner Concept next.
PREVIOUSMORE ON PGROUTINERPgRoutiner Readme PgRoutiner Default Config PgRoutiner Database Management PgRoutiner Code-Gen PgRoutiner DocumentationTo receive notifications about new posts and updates, consider subscribing to my LinkdIn page:
vb-software linkedin
You will receive notifications about new posts on your LinkedIn feed.Comments
\ No newline at end of file
+PgRoutiner Blog - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PgRoutiner Blog
PgRoutiner is a set of command-line tools I created for fun and for my development needs while working on various .NET and PostgreSQL projects.
It integrates with .NET project configuration and allows you to do various stuff out of the box, no configuration needed. For example:
This is just one small example. PgRoutiner is incredibly feature-rich. As it happened, I was constantly adding new features as I was working on other projects. Initially, it was intended to be my personal code generator to relieve me of writing boring data-access code (calling a function and mapping the results, for example).
It was first published as the .NET Global Tool because that was, and still is - the most convenient and easiest way of managing different versions and updates, at least for me. I was really surprised to find out that, at the time of writing this blog, it had over 135K. That's, well, decent, but still not much. Note, while I was working on this blog series, it grew over 140K already.
However, I really didn't think anyone else would want to use it.
It was more of a fun experiment for me. It changed concepts a couple of times; it is loaded with features, and I thought it would be too complicated to be used by someone other than me. I guess I was wrong. I didn't even have time to properly finish the entire documentation, as you can see on the main readme file.
But I did create a nice presentation at one point. In any case, that won't stop me from blogging about it.
A few days ago, I did a migration of PgRoutiner to the new .NET8, and I wanted to try out how it works with the new NativeAOT Feature of the NET8. Native AOT is when we take our normal NET8 project, and we compile it to a native binary executable for the target OS.
AOT builds have very short, almost instantaneous startup times and are, in general, very optimized and fast.
It required some reconfiguration and some tweaking, and some parts had to be rewritten completely - but the final result blew me away: AOT build runs so fast that it is a completely different user experience. I can't go back to the normal .NET Tool after this.
If anyone wants to try it out, builds are on the GitHub release page.
So, what is it, and how it works?
See the PgRoutiner Concept next.
PREVIOUSMORE ON PGROUTINERPgRoutiner Readme PgRoutiner Default Config PgRoutiner Database Management PgRoutiner Code-Gen PgRoutiner DocumentationTo receive notifications about new posts and updates, consider subscribing to my LinkdIn page:
vb-software linkedin
You will receive notifications about new posts on your LinkedIn feed.Comments
\ No newline at end of file
diff --git a/blog/piko-orm/index.html b/blog/piko-orm/index.html
index 7d03902c..ddf29e67 100644
--- a/blog/piko-orm/index.html
+++ b/blog/piko-orm/index.html
@@ -1,4 +1,4 @@
-Piko ORM - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Piko ORM
Piko ORM is so, so tiny. It's Piko. The world's tiniest, smallest ORM for .NET.
Works best with PostgreSQL.
using System.Data;
+Piko ORM - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Piko ORM
Piko ORM is so, so tiny. It's Piko. The world's tiniest, smallest ORM for .NET.
Works best with PostgreSQL.
using System.Data;
using NpgsqlTypes;
namespace DataAccess;
diff --git a/blog/postgresql-array/index.html b/blog/postgresql-array/index.html
index 70df43ec..b0eebe71 100644
--- a/blog/postgresql-array/index.html
+++ b/blog/postgresql-array/index.html
@@ -1,4 +1,4 @@
-PostgreSQL Arrays 🐘 - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PostgreSQL Arrays 🐘
Many-To-Many
Traditionally in relational databases, many-to-many data design is implemented using three tables.
Classic examples are users and roles: One user can be in many roles and one role can be on many users. For example, most developers are familiar with something like this (or, a variation of this approach):
create table users (
+PostgreSQL Arrays 🐘 - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PostgreSQL Arrays 🐘
Many-To-Many
Traditionally in relational databases, many-to-many data design is implemented using three tables.
Classic examples are users and roles: One user can be in many roles and one role can be on many users. For example, most developers are familiar with something like this (or, a variation of this approach):
create table users (
user_id int not null primary key generated always as identity,
name text not null unique
);
diff --git a/blog/postgresql-paging/index.html b/blog/postgresql-paging/index.html
index 7eb69aa5..fa755ca9 100644
--- a/blog/postgresql-paging/index.html
+++ b/blog/postgresql-paging/index.html
@@ -1,4 +1,4 @@
-PostgreSQL Paging Benchmarks - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PostgreSQL Paging Benchmarks
This is a performance benchmark project that tests different data paging approaches in PostgreSQL. You can find the source code in the PgPagingBenchmarks repository.
Setup
PostgreSQL 16 instance on my laptop:
select version();
+PostgreSQL Paging Benchmarks - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
PostgreSQL Paging Benchmarks
This is a performance benchmark project that tests different data paging approaches in PostgreSQL. You can find the source code in the PgPagingBenchmarks repository.
Setup
PostgreSQL 16 instance on my laptop:
select version();
PostgreSQL 16.0 (Ubuntu 16.0-1.pgdg20.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, 64-bit
select version();
PostgreSQL 16.0 (Ubuntu 16.0-1.pgdg20.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, 64-bit
Initial schema (source):
begin;
diff --git a/blog/postgresql-record-type/index.html b/blog/postgresql-record-type/index.html
index dd08c3b2..825c7c14 100644
--- a/blog/postgresql-record-type/index.html
+++ b/blog/postgresql-record-type/index.html
@@ -1,4 +1,4 @@
-Execute Custom Function For Each Record - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Execute Custom Function For Each Record
Start with a query that returns a series of numbers: select q.i from generate_series(1, 10) q(i)
The goal is to execute a custom function for each record in this select (this is just an example; query could be anything).
That something will always return a previous value for the field i
in the q(i)
test table.
That is essentially a custom implementation of the LAG window function, but this serves as a proof of concept to demonstrate that we can do a custom function call for each value in any SELECT.
We will do this in a function that test_rec()
that returns table (i, j), where i
is a value from generate_series
and j
is the result from a custom function executed for each result that represents a previous (lag) value.
First, we need a wrap-up that generate-series in a subquery because generate_series
returns a number, not a table record, and we need a table record:
select *
+Execute Custom Function For Each Record - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Execute Custom Function For Each Record
Start with a query that returns a series of numbers: select q.i from generate_series(1, 10) q(i)
The goal is to execute a custom function for each record in this select (this is just an example; query could be anything).
That something will always return a previous value for the field i
in the q(i)
test table.
That is essentially a custom implementation of the LAG window function, but this serves as a proof of concept to demonstrate that we can do a custom function call for each value in any SELECT.
We will do this in a function that test_rec()
that returns table (i, j), where i
is a value from generate_series
and j
is the result from a custom function executed for each result that represents a previous (lag) value.
First, we need a wrap-up that generate-series in a subquery because generate_series
returns a number, not a table record, and we need a table record:
select *
from (
select q.i
from generate_series(1, 10) q(i)
diff --git a/blog/postgresql-temporal-tables/index.html b/blog/postgresql-temporal-tables/index.html
index d4d3fcae..bdbd4cd4 100644
--- a/blog/postgresql-temporal-tables/index.html
+++ b/blog/postgresql-temporal-tables/index.html
@@ -1,4 +1,4 @@
-Custom Temporal Tables in PostgreSQL - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Custom Temporal Tables in PostgreSQL
The following script will add support for temporal tables in PostgreSQL.
Description
It will add two new functions in the public
schema:
1) function temporal_table_trigger
Trigger function that inserts temporal data.
This function will create a new schema (source schema plus __history
) and a new table with temporal data in it.
The new table will have the exact same schema without keys and constraints with one extra field - data_valid_to timestamptz not null default now();
2) function init_temporal_tables
This function initiates the entire temporal tables system by creating trigger temporal_table_trigger
on each tables It accepts an array of schema names we want to have temporal tables.
To call this function for the public schema:
select init_temporal_tables(array['public']);
select init_temporal_tables(array['public']);
Script
create or replace function temporal_table_trigger()
+Custom Temporal Tables in PostgreSQL - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Custom Temporal Tables in PostgreSQL
The following script will add support for temporal tables in PostgreSQL.
Description
It will add two new functions in the public
schema:
1) function temporal_table_trigger
Trigger function that inserts temporal data.
This function will create a new schema (source schema plus __history
) and a new table with temporal data in it.
The new table will have the exact same schema without keys and constraints with one extra field - data_valid_to timestamptz not null default now();
2) function init_temporal_tables
This function initiates the entire temporal tables system by creating trigger temporal_table_trigger
on each tables It accepts an array of schema names we want to have temporal tables.
To call this function for the public schema:
select init_temporal_tables(array['public']);
select init_temporal_tables(array['public']);
Script
create or replace function temporal_table_trigger()
returns trigger
language plpgsql
as
diff --git a/blog/recursion-postgresql/part1-different-type-of-recursion/index.html b/blog/recursion-postgresql/part1-different-type-of-recursion/index.html
index e1227fc6..4f54c752 100644
--- a/blog/recursion-postgresql/part1-different-type-of-recursion/index.html
+++ b/blog/recursion-postgresql/part1-different-type-of-recursion/index.html
@@ -1,4 +1,4 @@
-Recursion with PostgreSQL Part 1 - A Different Type of Recursion - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Recursion with PostgreSQL Part 1 - A Different Type of Recursion
PostgreSQL offers a powerful procedural programming model out of the box (in addition to the standard SQL).
You can combine that with the standard SQL approach to overcome almost any issue and solve any programming task. Sometimes, the good old procedural approach may be a more straightforward way out of the complex data problems than standard SQL.
This article will try to demonstrate that approach to a complex problem example.
The Problem
Let's say we want to write a function that will return all related tables for a table name in a parameter.
We will start with a made-up schema:
create table division_status (
+Recursion with PostgreSQL Part 1 - A Different Type of Recursion - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Recursion with PostgreSQL Part 1 - A Different Type of Recursion
PostgreSQL offers a powerful procedural programming model out of the box (in addition to the standard SQL).
You can combine that with the standard SQL approach to overcome almost any issue and solve any programming task. Sometimes, the good old procedural approach may be a more straightforward way out of the complex data problems than standard SQL.
This article will try to demonstrate that approach to a complex problem example.
The Problem
Let's say we want to write a function that will return all related tables for a table name in a parameter.
We will start with a made-up schema:
create table division_status (
division_status_id int primary key,
name text
);
diff --git a/blog/recursion-postgresql/part2-performances/index.html b/blog/recursion-postgresql/part2-performances/index.html
index f139bca5..34ff04da 100644
--- a/blog/recursion-postgresql/part2-performances/index.html
+++ b/blog/recursion-postgresql/part2-performances/index.html
@@ -1,4 +1,4 @@
-Recursion with PostgreSQL Part 2 - Performances - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Recursion with PostgreSQL Part 2 - Performances
This is a follow-up article on my previous blog post A Different Type of SQL Recursion with PostgreSQL.
Previously, I explored two different approaches to recursion with PostgreSQL.
Now, it's time to do some testing.
Testing
Instead of a view on system tables that enables us to traverse table relationship tree, I've decided to create a simple test table:
create table big_tree_test (
+Recursion with PostgreSQL Part 2 - Performances - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Recursion with PostgreSQL Part 2 - Performances
This is a follow-up article on my previous blog post A Different Type of SQL Recursion with PostgreSQL.
Previously, I explored two different approaches to recursion with PostgreSQL.
Now, it's time to do some testing.
Testing
Instead of a view on system tables that enables us to traverse table relationship tree, I've decided to create a simple test table:
create table big_tree_test (
id text not null,
parent_id text not null
);
create table big_tree_test (
diff --git a/blog/recursion-postgresql/part3-cycle-detection/index.html b/blog/recursion-postgresql/part3-cycle-detection/index.html
index 802bfb42..f4bb7e56 100644
--- a/blog/recursion-postgresql/part3-cycle-detection/index.html
+++ b/blog/recursion-postgresql/part3-cycle-detection/index.html
@@ -1,4 +1,4 @@
-Recursion with PostgreSQL Part 3 - Cycle Detection - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Recursion with PostgreSQL Part 3 - Cycle Detection
Yesterday, I wrote another article for my Recursion with PostgreSQL series: Recursion with PostgreSQL Follow-Up 1 - Performances .
My conclusion was that the CTE recursion method was severely lacking a way out of the infinite loops - and then I proceeded to write a version that defined a maximum recursion depth as a parameter:
create or replace function select_nodes_recursive_cte(
+Recursion with PostgreSQL Part 3 - Cycle Detection - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Recursion with PostgreSQL Part 3 - Cycle Detection
Yesterday, I wrote another article for my Recursion with PostgreSQL series: Recursion with PostgreSQL Follow-Up 1 - Performances .
My conclusion was that the CTE recursion method was severely lacking a way out of the infinite loops - and then I proceeded to write a version that defined a maximum recursion depth as a parameter:
create or replace function select_nodes_recursive_cte(
_id text,
_max_recursion int = 100
)
diff --git a/blog/recursion-postgresql/part4-right-path/index.html b/blog/recursion-postgresql/part4-right-path/index.html
index 3e70346a..bd37c87f 100644
--- a/blog/recursion-postgresql/part4-right-path/index.html
+++ b/blog/recursion-postgresql/part4-right-path/index.html
@@ -1,4 +1,4 @@
-Recursion with PostgreSQL Part 4 - Finding the Right Path - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Recursion with PostgreSQL Part 4 - Finding the Right Path
The mystery has finally been resolved, and I have learned something today.
In my previous article, I managed to get some really crazy performances in tree processing by using PostgreSQL recursive procedural-style function.
While recursive CTE was getting some severe performance degradation - even on a smaller scale: It usually would eat all of my available space.
Thanks to @fatalmind (Markus Winand) comment, I got better clarification on what path and cycle really mean.
Example
So we have this test table:
create table big_tree_test (id text, parent_id text);
create table big_tree_test (id text, parent_id text);
id | parent_id |
+Recursion with PostgreSQL Part 4 - Finding the Right Path - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Recursion with PostgreSQL Part 4 - Finding the Right Path
The mystery has finally been resolved, and I have learned something today.
In my previous article, I managed to get some really crazy performances in tree processing by using PostgreSQL recursive procedural-style function.
While recursive CTE was getting some severe performance degradation - even on a smaller scale: It usually would eat all of my available space.
Thanks to @fatalmind (Markus Winand) comment, I got better clarification on what path and cycle really mean.
Example
So we have this test table:
create table big_tree_test (id text, parent_id text);
create table big_tree_test (id text, parent_id text);
id | parent_id |
---------+-----------+
node_1 | node_3 |
node_1 | node_8 |
diff --git a/blog/sql-vs-ddd/index.html b/blog/sql-vs-ddd/index.html
index 1f28bcd2..d70d3d77 100644
--- a/blog/sql-vs-ddd/index.html
+++ b/blog/sql-vs-ddd/index.html
@@ -1,4 +1,4 @@
-How DDD is screwing up your SQL - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
How DDD is screwing up your SQL
This morning, I came across an interesting article about DDD and SQL on the internet named How SQL is screwing up your DDD. Normally I would post this article on my LinkedIn page with my own thoughts, but the subject matter is way too interesting, so, I'll just make my own blogpost.
The main premise of the article is an exercise, a code kata, in data modeling. Quote:
The goal is to model a collection of value object items, where the collection maintains a “default” item. It forces you to consider things like
How do you handle selecting which item is the default? How do you avoid the possibility of the collection ending up with no default item? How do you handle the case where the default item is removed from the collection? How do you avoid the possibility of the collection having no items at all?
A hypothetical example given is the Customer
entity, which possesses a collection of Address
.
It appears that the ideal domain model in a domain-driven world for this problem would be something like this:
public class Address
+How DDD is screwing up your SQL - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
How DDD is screwing up your SQL
This morning, I came across an interesting article about DDD and SQL on the internet named How SQL is screwing up your DDD. Normally I would post this article on my LinkedIn page with my own thoughts, but the subject matter is way too interesting, so, I'll just make my own blogpost.
The main premise of the article is an exercise, a code kata, in data modeling. Quote:
The goal is to model a collection of value object items, where the collection maintains a “default” item. It forces you to consider things like
How do you handle selecting which item is the default? How do you avoid the possibility of the collection ending up with no default item? How do you handle the case where the default item is removed from the collection? How do you avoid the possibility of the collection having no items at all?
A hypothetical example given is the Customer
entity, which possesses a collection of Address
.
It appears that the ideal domain model in a domain-driven world for this problem would be something like this:
public class Address
{
public int Id { get; private set; }
public string Street { get; private set; }
diff --git a/blog/transaction-script/index.html b/blog/transaction-script/index.html
index c1cdd040..d4521784 100644
--- a/blog/transaction-script/index.html
+++ b/blog/transaction-script/index.html
@@ -1,4 +1,4 @@
-Transaction Script DDD vs SQL - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Which is the Better Approach?
And why?
- Readability?
- Maintainability?
- Testability?
- Debugging?
- Performances?
Transaction Script in Java
import java.sql.Connection;
+Transaction Script DDD vs SQL - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Which is the Better Approach?
And why?
- Readability?
- Maintainability?
- Testability?
- Debugging?
- Performances?
Transaction Script in Java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
diff --git a/blog/what-have-stored-procedures-ever-done/index.html b/blog/what-have-stored-procedures-ever-done/index.html
index ce459b15..84ffb3e5 100644
--- a/blog/what-have-stored-procedures-ever-done/index.html
+++ b/blog/what-have-stored-procedures-ever-done/index.html
@@ -1 +1 @@
-What have the STORED PROCEDURES ever done for us? - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
What have the STORED PROCEDURES ever done for us?
So, in all seriousness - what have the STORED PROCEDURES ever done for us?
Security?
You can very easily set up any database that has support for SP in a way that:
Your application is only aware of that one database account that can only execute the SP required by your application and nothing more.
That application account can't access data at all directly.
That application account is created and managed by another database account with a higher level of privileges and that is stored and protected much more securely.
That system is usually called the least-privilege principle and it can help you to:
Protect your data from theft way more securely because the account exposed to the application doesn't have direct access to data.
Guard your system against SQL injection attacks. The SQL injection is an impossibility (unless you decide to use dynamic SQL).
Prevents well-meaning junior developers from writing horribly inefficient queries. Well, that's not security per se, but it is a very useful side-effect.
Militaries around the world use this principle also called - "need-to-know-basis".
And the military takes security very, very seriously.
Do you?
Performances?
Well, this one is easy, everyone knows that at least - STORED PROCEDURES will give you performance gain.
Database code needs to be closer to the actual data and usually, there is much less network utilization between database and application.
Besides that, STORED PROCEDURE can be heavily optimized by the database engine and execution plans cached and ready.
Maintainability?
Imagine this scenario:
Users are seeing data on their screens that shouldn't be there. So, it's a bug, it needs a bit of maintenance obviously.
What do you do?
You can, of course, just create a Jira ticket ... or, or you can do something like this:
Connect to the database server with the query tool Execute the STORED PROCEDURE that serves that screen and examine the data. If data contains the bug, then you know that the problem is within the STORED PROCEDURE, if it doesn't then the bug is somewhere within the application layer. Now, within seconds you narrowed a search for a bug to at least half of the system.
If it is in your database layer, you can fix it immediately with one ALTER PROCEDURE (or REPLACE FUNCTION) call ... and it's fixed within minutes or even less - with zero downtime.
If it is not, then at least you know that it doesn't have anything to do with the database layer, and you can focus your investigation on your classes, designed domain models with patterns, abstract factories, reducers API controllers, injected services and whatnot you name it. Good luck with that, it will take some time for sure, and the application needs to be patched, redeployed, and all that jazz.
Does your user care about that?
Or, do they usually want to see bugs fixed right here and right now?
But that is not the only factor in this story that affects maintainability.
Your database is a system of course, and if you surround your database with STORED PROCEDURES, which is essentially an API layer - you got yourself a black box.
A black box is a system with known inputs and known outputs - without any knowledge of inner workings.
Your database may serve dozens and dozens of applications, services, micro-services, reporting systems, integrations, etc, etc, and, by having a black box concept you can change the schema and inner workings while respecting known outputs for know inputs with supreme confidence and efficiency.
How's that for maintainability?
Availability?
You want to have a system with maximum availability, don't you? I mean, downtimes are bad for business. Very bad.
I may have already mentioned above that you can patch a bug in STORED PROCEDURE without having to stop anything. Hence, availability.
No downtime.
Simply run "ALTER PROCEDURE" or "REPLACE FUNCTION" and there you go.
But it gets better. Imagine this. You have a huge table with a gazillion records. And for some reason, you have to change the data type of one field in that table. What do you do? Well, of course, you rush to create a migration that alters the table and alters the field type and then you deploy your update and ... nothing happens. For hours. The table is locked, and the entire system is unresponsive because everybody has to wait for your alter to finish and that may take hours. Many, many expensive hours of downtime.
But not if you use STORED PROCEDURES!
You could also write a script that will do this.
Create an auxiliary table from your main table without relations Alter procedures to insert data in that auxiliary table Alter the main table to change the data type in your field, and wait to finish After it finishes, insert data from the auxiliary table and revert procedure to original version No downtime.
Availability.
Apart from security, performance, maintainability, and availability, what STORED PROCEDURES have ever really done for us?
I really don't know.
To receive notifications about new posts and updates, consider subscribing to my LinkdIn page:
vb-software linkedin
You will receive notifications about new posts on your LinkedIn feed.Comments
\ No newline at end of file
+What have the STORED PROCEDURES ever done for us? - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
What have the STORED PROCEDURES ever done for us?
So, in all seriousness - what have the STORED PROCEDURES ever done for us?
Security?
You can very easily set up any database that has support for SP in a way that:
Your application is only aware of that one database account that can only execute the SP required by your application and nothing more.
That application account can't access data at all directly.
That application account is created and managed by another database account with a higher level of privileges and that is stored and protected much more securely.
That system is usually called the least-privilege principle and it can help you to:
Protect your data from theft way more securely because the account exposed to the application doesn't have direct access to data.
Guard your system against SQL injection attacks. The SQL injection is an impossibility (unless you decide to use dynamic SQL).
Prevents well-meaning junior developers from writing horribly inefficient queries. Well, that's not security per se, but it is a very useful side-effect.
Militaries around the world use this principle also called - "need-to-know-basis".
And the military takes security very, very seriously.
Do you?
Performances?
Well, this one is easy, everyone knows that at least - STORED PROCEDURES will give you performance gain.
Database code needs to be closer to the actual data and usually, there is much less network utilization between database and application.
Besides that, STORED PROCEDURE can be heavily optimized by the database engine and execution plans cached and ready.
Maintainability?
Imagine this scenario:
Users are seeing data on their screens that shouldn't be there. So, it's a bug, it needs a bit of maintenance obviously.
What do you do?
You can, of course, just create a Jira ticket ... or, or you can do something like this:
Connect to the database server with the query tool Execute the STORED PROCEDURE that serves that screen and examine the data. If data contains the bug, then you know that the problem is within the STORED PROCEDURE, if it doesn't then the bug is somewhere within the application layer. Now, within seconds you narrowed a search for a bug to at least half of the system.
If it is in your database layer, you can fix it immediately with one ALTER PROCEDURE (or REPLACE FUNCTION) call ... and it's fixed within minutes or even less - with zero downtime.
If it is not, then at least you know that it doesn't have anything to do with the database layer, and you can focus your investigation on your classes, designed domain models with patterns, abstract factories, reducers API controllers, injected services and whatnot you name it. Good luck with that, it will take some time for sure, and the application needs to be patched, redeployed, and all that jazz.
Does your user care about that?
Or, do they usually want to see bugs fixed right here and right now?
But that is not the only factor in this story that affects maintainability.
Your database is a system of course, and if you surround your database with STORED PROCEDURES, which is essentially an API layer - you got yourself a black box.
A black box is a system with known inputs and known outputs - without any knowledge of inner workings.
Your database may serve dozens and dozens of applications, services, micro-services, reporting systems, integrations, etc, etc, and, by having a black box concept you can change the schema and inner workings while respecting known outputs for know inputs with supreme confidence and efficiency.
How's that for maintainability?
Availability?
You want to have a system with maximum availability, don't you? I mean, downtimes are bad for business. Very bad.
I may have already mentioned above that you can patch a bug in STORED PROCEDURE without having to stop anything. Hence, availability.
No downtime.
Simply run "ALTER PROCEDURE" or "REPLACE FUNCTION" and there you go.
But it gets better. Imagine this. You have a huge table with a gazillion records. And for some reason, you have to change the data type of one field in that table. What do you do? Well, of course, you rush to create a migration that alters the table and alters the field type and then you deploy your update and ... nothing happens. For hours. The table is locked, and the entire system is unresponsive because everybody has to wait for your alter to finish and that may take hours. Many, many expensive hours of downtime.
But not if you use STORED PROCEDURES!
You could also write a script that will do this.
Create an auxiliary table from your main table without relations Alter procedures to insert data in that auxiliary table Alter the main table to change the data type in your field, and wait to finish After it finishes, insert data from the auxiliary table and revert procedure to original version No downtime.
Availability.
Apart from security, performance, maintainability, and availability, what STORED PROCEDURES have ever really done for us?
I really don't know.
To receive notifications about new posts and updates, consider subscribing to my LinkdIn page:
vb-software linkedin
You will receive notifications about new posts on your LinkedIn feed.Comments
\ No newline at end of file
diff --git a/blog/where-to/index.html b/blog/where-to/index.html
index 12a92d35..1c1e6fc7 100644
--- a/blog/where-to/index.html
+++ b/blog/where-to/index.html
@@ -1,4 +1,4 @@
-Which Way .NET Developer? - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Which Way .NET Developer?
You must create an endpoint that will return games, joined by genre by id, from the database.
Option 1
public abstract class BaseModel
+Which Way .NET Developer? - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
Which Way .NET Developer?
You must create an endpoint that will return games, joined by genre by id, from the database.
Option 1
public abstract class BaseModel
{
public Guid Id { get; set; }
}
diff --git a/blogs/aot/index.html b/blogs/aot/index.html
index 7dd79625..26065d14 100644
--- a/blogs/aot/index.html
+++ b/blogs/aot/index.html
@@ -1 +1 @@
-aot blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...
\ No newline at end of file
+aot blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...
\ No newline at end of file
diff --git a/blogs/benchmarks/index.html b/blogs/benchmarks/index.html
index 5444495a..5b49cda5 100644
--- a/blogs/benchmarks/index.html
+++ b/blogs/benchmarks/index.html
@@ -1 +1 @@
-benchmarks blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, sql, benchmarks
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
+benchmarks blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, sql, benchmarks
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
diff --git a/blogs/c#/index.html b/blogs/c#/index.html
index fc0b1156..630b8f57 100644
--- a/blogs/c#/index.html
+++ b/blogs/c#/index.html
@@ -1 +1 @@
-c# blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic, tool
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...
\ No newline at end of file
+c# blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic, tool
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...
\ No newline at end of file
diff --git a/blogs/csharp/index.html b/blogs/csharp/index.html
index d61233ba..84f63fed 100644
--- a/blogs/csharp/index.html
+++ b/blogs/csharp/index.html
@@ -1 +1 @@
-csharp blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
c#, dotnet, .net, .net core, orm, database, software, development, software-development
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
+csharp blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
c#, dotnet, .net, .net core, orm, database, software, development, software-development
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
diff --git a/blogs/database/index.html b/blogs/database/index.html
index f769067e..d974bde0 100644
--- a/blogs/database/index.html
+++ b/blogs/database/index.html
@@ -1 +1 @@
-database blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, tool, database, dotnet, c#, sql, stored procedure, procedure
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...Feb 7, 2020What have the STORED PROCEDURES ever done for us?
Apart from security, performance, maintainability, and availability, what STORED PROCEDURES have ever really done for us?
Read more...
\ No newline at end of file
+database blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, tool, database, dotnet, c#, sql, stored procedure, procedure
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...Feb 7, 2020What have the STORED PROCEDURES ever done for us?
Apart from security, performance, maintainability, and availability, what STORED PROCEDURES have ever really done for us?
Read more...
\ No newline at end of file
diff --git a/blogs/ddd/index.html b/blogs/ddd/index.html
index 49a576f1..24d552d2 100644
--- a/blogs/ddd/index.html
+++ b/blogs/ddd/index.html
@@ -1 +1 @@
-ddd blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, model, modeling, data, data model, relational model, domain, domain model
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
+ddd blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, model, modeling, data, data model, relational model, domain, domain model
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
diff --git a/blogs/dotnet/index.html b/blogs/dotnet/index.html
index 8009d918..1be362c3 100644
--- a/blogs/dotnet/index.html
+++ b/blogs/dotnet/index.html
@@ -1 +1 @@
-dotnet blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic, .net, .net core, orm, software, development, software-development, tool
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Sep 16, 2023Which Way .NET Developer?
You take the blue pill - the story ends, ... etc, select option 1 or option 2. Which one is better?
Read more...Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...
\ No newline at end of file
+dotnet blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic, .net, .net core, orm, software, development, software-development, tool
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Sep 16, 2023Which Way .NET Developer?
You take the blue pill - the story ends, ... etc, select option 1 or option 2. Which one is better?
Read more...Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...
\ No newline at end of file
diff --git a/blogs/general/index.html b/blogs/general/index.html
index 33bd4455..4e5c97c8 100644
--- a/blogs/general/index.html
+++ b/blogs/general/index.html
@@ -1 +1 @@
-general blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, software-development, software-architecture, architecture, software, development, postgresql, programming, arrays, model, modeling, data, data model, relational model, domain, domain model, benchmarks, c#, dotnet, .net, .net core, orm, database
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 10, 2024Transaction Script DDD vs SQL
Transaction Script DDD vs SQL
Read more...May 4, 2024Common Sense Software Design
Common Sense Software Design Approach for RDBMS-backed Type of Software
Read more...May 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read more...Mar 20, 2024How DDD is screwing up your SQL
How DDD is screwing up your SQL
Read more...Feb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read more...Sep 16, 2023Which Way .NET Developer?
You take the blue pill - the story ends, ... etc, select option 1 or option 2. Which one is better?
Read more...May 19, 2023What is Micro ORM?
What are the Micro ORM libraries, why do they even exist, what are their purpose, what are they used for, and what are the alternatives?
Read more...Feb 8, 2024Piko ORM
The world's tiniest, smallest ORM for .NET
Read more...May 19, 2023Haters Build Software
Some opinions on software architecture and design. What are the "ilities" what are quality attributes and why are they important for software architecture and design?
Read more...
\ No newline at end of file
+general blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, software-development, software-architecture, architecture, software, development, postgresql, programming, arrays, model, modeling, data, data model, relational model, domain, domain model, benchmarks, c#, dotnet, .net, .net core, orm, database
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 10, 2024Transaction Script DDD vs SQL
Transaction Script DDD vs SQL
Read more...May 4, 2024Common Sense Software Design
Common Sense Software Design Approach for RDBMS-backed Type of Software
Read more...May 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read more...Mar 20, 2024How DDD is screwing up your SQL
How DDD is screwing up your SQL
Read more...Feb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read more...Sep 16, 2023Which Way .NET Developer?
You take the blue pill - the story ends, ... etc, select option 1 or option 2. Which one is better?
Read more...May 19, 2023What is Micro ORM?
What are the Micro ORM libraries, why do they even exist, what are their purpose, what are they used for, and what are the alternatives?
Read more...Feb 8, 2024Piko ORM
The world's tiniest, smallest ORM for .NET
Read more...May 19, 2023Haters Build Software
Some opinions on software architecture and design. What are the "ilities" what are quality attributes and why are they important for software architecture and design?
Read more...
\ No newline at end of file
diff --git a/blogs/index.html b/blogs/index.html
index 45b7f2f2..03074f81 100644
--- a/blogs/index.html
+++ b/blogs/index.html
@@ -1 +1 @@
-blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, software-development, software-architecture, architecture, software, development, api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic, programming, arrays, model, modeling, data, data model, relational model, domain, domain model, benchmarks, plpgsql, function, functions, record, temporal, history, table, tables, recursion, tree, cte, .net, .net core, orm, tool, stored procedure, procedure
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 10, 2024Transaction Script DDD vs SQL
Transaction Script DDD vs SQL
Read more...May 4, 2024Common Sense Software Design
Common Sense Software Design Approach for RDBMS-backed Type of Software
Read more...May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read more...Mar 20, 2024How DDD is screwing up your SQL
How DDD is screwing up your SQL
Read more...Feb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Nov 6, 2023Execute Custom Function For Each Record
PostgreSQL crazy experiment with the record type.
Read more...Oct 10, 2023Custom Temporal Tables in PostgreSQL
PostgreSQL script that implements temporal tables without extension.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 1 - A Different Type of Recursion
Exploring a different approach to recursion with PostgreSQL by using recursive plpgsql function instead of recursive CTE query.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 2 - Performances
Follow-Up 1 on PostgreSQL recursive function. Some performance optimizations.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 4 - Finding the Right Path
The last part of the PostgreSQL recursive function series resolves a mystery and tree paths calculation — final performance benchmarks.
Read more...Sep 16, 2023Which Way .NET Developer?
You take the blue pill - the story ends, ... etc, select option 1 or option 2. Which one is better?
Read more...May 19, 2023What is Micro ORM?
What are the Micro ORM libraries, why do they even exist, what are their purpose, what are they used for, and what are the alternatives?
Read more...Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...Feb 8, 2024Piko ORM
The world's tiniest, smallest ORM for .NET
Read more...Sep 18, 2023Recursion with PostgreSQL Part 3 - Cycle Detection
Follow-Up 2 on PostgreSQL recursive function. Learning the cycle detection in recursive queries.
Read more...May 19, 2023Haters Build Software
Some opinions on software architecture and design. What are the "ilities" what are quality attributes and why are they important for software architecture and design?
Read more...Feb 7, 2020What have the STORED PROCEDURES ever done for us?
Apart from security, performance, maintainability, and availability, what STORED PROCEDURES have ever really done for us?
Read more...
\ No newline at end of file
+blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, software-development, software-architecture, architecture, software, development, api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic, programming, arrays, model, modeling, data, data model, relational model, domain, domain model, benchmarks, plpgsql, function, functions, record, temporal, history, table, tables, recursion, tree, cte, .net, .net core, orm, tool, stored procedure, procedure
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 10, 2024Transaction Script DDD vs SQL
Transaction Script DDD vs SQL
Read more...May 4, 2024Common Sense Software Design
Common Sense Software Design Approach for RDBMS-backed Type of Software
Read more...May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read more...Mar 20, 2024How DDD is screwing up your SQL
How DDD is screwing up your SQL
Read more...Feb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Nov 6, 2023Execute Custom Function For Each Record
PostgreSQL crazy experiment with the record type.
Read more...Oct 10, 2023Custom Temporal Tables in PostgreSQL
PostgreSQL script that implements temporal tables without extension.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 1 - A Different Type of Recursion
Exploring a different approach to recursion with PostgreSQL by using recursive plpgsql function instead of recursive CTE query.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 2 - Performances
Follow-Up 1 on PostgreSQL recursive function. Some performance optimizations.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 4 - Finding the Right Path
The last part of the PostgreSQL recursive function series resolves a mystery and tree paths calculation — final performance benchmarks.
Read more...Sep 16, 2023Which Way .NET Developer?
You take the blue pill - the story ends, ... etc, select option 1 or option 2. Which one is better?
Read more...May 19, 2023What is Micro ORM?
What are the Micro ORM libraries, why do they even exist, what are their purpose, what are they used for, and what are the alternatives?
Read more...Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...Feb 8, 2024Piko ORM
The world's tiniest, smallest ORM for .NET
Read more...Sep 18, 2023Recursion with PostgreSQL Part 3 - Cycle Detection
Follow-Up 2 on PostgreSQL recursive function. Learning the cycle detection in recursive queries.
Read more...May 19, 2023Haters Build Software
Some opinions on software architecture and design. What are the "ilities" what are quality attributes and why are they important for software architecture and design?
Read more...Feb 7, 2020What have the STORED PROCEDURES ever done for us?
Apart from security, performance, maintainability, and availability, what STORED PROCEDURES have ever really done for us?
Read more...
\ No newline at end of file
diff --git a/blogs/net8/index.html b/blogs/net8/index.html
index 36a5744a..fa5de6a6 100644
--- a/blogs/net8/index.html
+++ b/blogs/net8/index.html
@@ -1 +1 @@
-net8 blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...
\ No newline at end of file
+net8 blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...
\ No newline at end of file
diff --git a/blogs/npgsqlrest/index.html b/blogs/npgsqlrest/index.html
index 26707039..95824317 100644
--- a/blogs/npgsqlrest/index.html
+++ b/blogs/npgsqlrest/index.html
@@ -1 +1 @@
-npgsqlrest blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...
\ No newline at end of file
+npgsqlrest blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...
\ No newline at end of file
diff --git a/blogs/orm/index.html b/blogs/orm/index.html
index 6e7a03f0..39c0dbd9 100644
--- a/blogs/orm/index.html
+++ b/blogs/orm/index.html
@@ -1 +1 @@
-orm blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
c#, dotnet, .net, .net core, orm, database, software, development, software-development, software-architecture, architecture
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
+orm blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
c#, dotnet, .net, .net core, orm, database, software, development, software-development, software-architecture, architecture
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
diff --git a/blogs/pgroutiner/index.html b/blogs/pgroutiner/index.html
index 78b4d7db..d6042508 100644
--- a/blogs/pgroutiner/index.html
+++ b/blogs/pgroutiner/index.html
@@ -1 +1 @@
-pgroutiner blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, tool, database, dotnet, c#
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...
\ No newline at end of file
+pgroutiner blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, tool, database, dotnet, c#
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...
\ No newline at end of file
diff --git a/blogs/plpgsql/index.html b/blogs/plpgsql/index.html
index eba4bb27..7e45884c 100644
--- a/blogs/plpgsql/index.html
+++ b/blogs/plpgsql/index.html
@@ -1 +1 @@
-plpgsql blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, sql, plpgsql, function, functions, record, temporal, history, table, tables, recursion, tree, cte
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5Nov 6, 2023Execute Custom Function For Each Record
PostgreSQL crazy experiment with the record type.
Read more...Oct 10, 2023Custom Temporal Tables in PostgreSQL
PostgreSQL script that implements temporal tables without extension.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 1 - A Different Type of Recursion
Exploring a different approach to recursion with PostgreSQL by using recursive plpgsql function instead of recursive CTE query.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 2 - Performances
Follow-Up 1 on PostgreSQL recursive function. Some performance optimizations.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 4 - Finding the Right Path
The last part of the PostgreSQL recursive function series resolves a mystery and tree paths calculation — final performance benchmarks.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 3 - Cycle Detection
Follow-Up 2 on PostgreSQL recursive function. Learning the cycle detection in recursive queries.
Read more...
\ No newline at end of file
+plpgsql blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, sql, plpgsql, function, functions, record, temporal, history, table, tables, recursion, tree, cte
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5Nov 6, 2023Execute Custom Function For Each Record
PostgreSQL crazy experiment with the record type.
Read more...Oct 10, 2023Custom Temporal Tables in PostgreSQL
PostgreSQL script that implements temporal tables without extension.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 1 - A Different Type of Recursion
Exploring a different approach to recursion with PostgreSQL by using recursive plpgsql function instead of recursive CTE query.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 2 - Performances
Follow-Up 1 on PostgreSQL recursive function. Some performance optimizations.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 4 - Finding the Right Path
The last part of the PostgreSQL recursive function series resolves a mystery and tree paths calculation — final performance benchmarks.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 3 - Cycle Detection
Follow-Up 2 on PostgreSQL recursive function. Learning the cycle detection in recursive queries.
Read more...
\ No newline at end of file
diff --git a/blogs/postgres/index.html b/blogs/postgres/index.html
index 7d1f5c14..94ff7095 100644
--- a/blogs/postgres/index.html
+++ b/blogs/postgres/index.html
@@ -1 +1 @@
-postgres blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...
\ No newline at end of file
+postgres blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...
\ No newline at end of file
diff --git a/blogs/postgresql/index.html b/blogs/postgresql/index.html
index f2d24893..5bd049c7 100644
--- a/blogs/postgresql/index.html
+++ b/blogs/postgresql/index.html
@@ -1 +1 @@
-postgresql blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic, programming, arrays, sql, benchmarks, plpgsql, function, functions, record, temporal, history, table, tables, recursion, tree, cte, tool
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read more...Feb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Nov 6, 2023Execute Custom Function For Each Record
PostgreSQL crazy experiment with the record type.
Read more...Oct 10, 2023Custom Temporal Tables in PostgreSQL
PostgreSQL script that implements temporal tables without extension.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 1 - A Different Type of Recursion
Exploring a different approach to recursion with PostgreSQL by using recursive plpgsql function instead of recursive CTE query.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 2 - Performances
Follow-Up 1 on PostgreSQL recursive function. Some performance optimizations.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 4 - Finding the Right Path
The last part of the PostgreSQL recursive function series resolves a mystery and tree paths calculation — final performance benchmarks.
Read more...Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...Sep 18, 2023Recursion with PostgreSQL Part 3 - Cycle Detection
Follow-Up 2 on PostgreSQL recursive function. Learning the cycle detection in recursive queries.
Read more...
\ No newline at end of file
+postgresql blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic, programming, arrays, sql, benchmarks, plpgsql, function, functions, record, temporal, history, table, tables, recursion, tree, cte, tool
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read more...Feb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Nov 6, 2023Execute Custom Function For Each Record
PostgreSQL crazy experiment with the record type.
Read more...Oct 10, 2023Custom Temporal Tables in PostgreSQL
PostgreSQL script that implements temporal tables without extension.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 1 - A Different Type of Recursion
Exploring a different approach to recursion with PostgreSQL by using recursive plpgsql function instead of recursive CTE query.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 2 - Performances
Follow-Up 1 on PostgreSQL recursive function. Some performance optimizations.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 4 - Finding the Right Path
The last part of the PostgreSQL recursive function series resolves a mystery and tree paths calculation — final performance benchmarks.
Read more...Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...Sep 18, 2023Recursion with PostgreSQL Part 3 - Cycle Detection
Follow-Up 2 on PostgreSQL recursive function. Learning the cycle detection in recursive queries.
Read more...
\ No newline at end of file
diff --git a/blogs/rest/index.html b/blogs/rest/index.html
index 8dbc0f3b..5cda8b2b 100644
--- a/blogs/rest/index.html
+++ b/blogs/rest/index.html
@@ -1 +1 @@
-rest blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...
\ No newline at end of file
+rest blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
api, api-rest, restful-api, http, postgres, dotnet, net8, c#, aot, database, rest, server, postgresql, npgsqlrest, pgsql, pg, automatic
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...May 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...Jan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read more...
\ No newline at end of file
diff --git a/blogs/software-architecture/index.html b/blogs/software-architecture/index.html
index 55fe0431..e12fb283 100644
--- a/blogs/software-architecture/index.html
+++ b/blogs/software-architecture/index.html
@@ -1 +1 @@
-software-architecture blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, software-development, software-architecture, architecture, software, development
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
+software-architecture blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, software-development, software-architecture, architecture, software, development
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
diff --git a/blogs/software-design/index.html b/blogs/software-design/index.html
index 8608c716..ba516934 100644
--- a/blogs/software-design/index.html
+++ b/blogs/software-design/index.html
@@ -1 +1 @@
-software-design blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, software-development, software-architecture, architecture, software, development
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
+software-design blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, software-development, software-architecture, architecture, software, development
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
diff --git a/blogs/software-development/index.html b/blogs/software-development/index.html
index 31393ab2..e24d36cc 100644
--- a/blogs/software-development/index.html
+++ b/blogs/software-development/index.html
@@ -1 +1 @@
-software-development blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, software-development, software-architecture, architecture, software, development, postgresql, programming, arrays, model, modeling, data, data model, relational model, domain, domain model, benchmarks, c#, dotnet, .net, .net core, orm, database
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 10, 2024Transaction Script DDD vs SQL
Transaction Script DDD vs SQL
Read more...May 4, 2024Common Sense Software Design
Common Sense Software Design Approach for RDBMS-backed Type of Software
Read more...May 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read more...Mar 20, 2024How DDD is screwing up your SQL
How DDD is screwing up your SQL
Read more...Feb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read more...Sep 16, 2023Which Way .NET Developer?
You take the blue pill - the story ends, ... etc, select option 1 or option 2. Which one is better?
Read more...May 19, 2023What is Micro ORM?
What are the Micro ORM libraries, why do they even exist, what are their purpose, what are they used for, and what are the alternatives?
Read more...Feb 8, 2024Piko ORM
The world's tiniest, smallest ORM for .NET
Read more...May 19, 2023Haters Build Software
Some opinions on software architecture and design. What are the "ilities" what are quality attributes and why are they important for software architecture and design?
Read more...
\ No newline at end of file
+software-development blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
ddd, sql, software-development, software-architecture, architecture, software, development, postgresql, programming, arrays, model, modeling, data, data model, relational model, domain, domain model, benchmarks, c#, dotnet, .net, .net core, orm, database
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 10, 2024Transaction Script DDD vs SQL
Transaction Script DDD vs SQL
Read more...May 4, 2024Common Sense Software Design
Common Sense Software Design Approach for RDBMS-backed Type of Software
Read more...May 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read more...Mar 20, 2024How DDD is screwing up your SQL
How DDD is screwing up your SQL
Read more...Feb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read more...Sep 16, 2023Which Way .NET Developer?
You take the blue pill - the story ends, ... etc, select option 1 or option 2. Which one is better?
Read more...May 19, 2023What is Micro ORM?
What are the Micro ORM libraries, why do they even exist, what are their purpose, what are they used for, and what are the alternatives?
Read more...Feb 8, 2024Piko ORM
The world's tiniest, smallest ORM for .NET
Read more...May 19, 2023Haters Build Software
Some opinions on software architecture and design. What are the "ilities" what are quality attributes and why are they important for software architecture and design?
Read more...
\ No newline at end of file
diff --git a/blogs/sql/index.html b/blogs/sql/index.html
index 215c05d8..70ec4f3b 100644
--- a/blogs/sql/index.html
+++ b/blogs/sql/index.html
@@ -1 +1 @@
-sql blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, programming, arrays, ddd, sql, model, modeling, data, data model, relational model, domain, domain model, benchmarks, plpgsql, function, functions, record, temporal, history, table, tables, recursion, tree, cte, database, stored procedure, procedure
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read more...Mar 20, 2024How DDD is screwing up your SQL
How DDD is screwing up your SQL
Read more...Feb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read more...Nov 6, 2023Execute Custom Function For Each Record
PostgreSQL crazy experiment with the record type.
Read more...Oct 10, 2023Custom Temporal Tables in PostgreSQL
PostgreSQL script that implements temporal tables without extension.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 1 - A Different Type of Recursion
Exploring a different approach to recursion with PostgreSQL by using recursive plpgsql function instead of recursive CTE query.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 2 - Performances
Follow-Up 1 on PostgreSQL recursive function. Some performance optimizations.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 4 - Finding the Right Path
The last part of the PostgreSQL recursive function series resolves a mystery and tree paths calculation — final performance benchmarks.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 3 - Cycle Detection
Follow-Up 2 on PostgreSQL recursive function. Learning the cycle detection in recursive queries.
Read more...Feb 7, 2020What have the STORED PROCEDURES ever done for us?
Apart from security, performance, maintainability, and availability, what STORED PROCEDURES have ever really done for us?
Read more...
\ No newline at end of file
+sql blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, programming, arrays, ddd, sql, model, modeling, data, data model, relational model, domain, domain model, benchmarks, plpgsql, function, functions, record, temporal, history, table, tables, recursion, tree, cte, database, stored procedure, procedure
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5May 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read more...Mar 20, 2024How DDD is screwing up your SQL
How DDD is screwing up your SQL
Read more...Feb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read more...Nov 6, 2023Execute Custom Function For Each Record
PostgreSQL crazy experiment with the record type.
Read more...Oct 10, 2023Custom Temporal Tables in PostgreSQL
PostgreSQL script that implements temporal tables without extension.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 1 - A Different Type of Recursion
Exploring a different approach to recursion with PostgreSQL by using recursive plpgsql function instead of recursive CTE query.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 2 - Performances
Follow-Up 1 on PostgreSQL recursive function. Some performance optimizations.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 4 - Finding the Right Path
The last part of the PostgreSQL recursive function series resolves a mystery and tree paths calculation — final performance benchmarks.
Read more...Sep 18, 2023Recursion with PostgreSQL Part 3 - Cycle Detection
Follow-Up 2 on PostgreSQL recursive function. Learning the cycle detection in recursive queries.
Read more...Feb 7, 2020What have the STORED PROCEDURES ever done for us?
Apart from security, performance, maintainability, and availability, what STORED PROCEDURES have ever really done for us?
Read more...
\ No newline at end of file
diff --git a/blogs/stored-procedure/index.html b/blogs/stored-procedure/index.html
index 56d36e6e..82d2e56f 100644
--- a/blogs/stored-procedure/index.html
+++ b/blogs/stored-procedure/index.html
@@ -1 +1 @@
-stored-procedure blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
database, sql, stored procedure, procedure
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
+stored-procedure blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
database, sql, stored procedure, procedure
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5
\ No newline at end of file
diff --git a/blogs/tool/index.html b/blogs/tool/index.html
index adf07d98..c92106c6 100644
--- a/blogs/tool/index.html
+++ b/blogs/tool/index.html
@@ -1 +1 @@
-tool blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, tool, database, dotnet, c#
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...
\ No newline at end of file
+tool blogs - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
postgresql, tool, database, dotnet, c#
all blogs 24 # aot 3 # benchmarks 1 # c# 8 # csharp 1 # database 6 # ddd 1 # dotnet 9 # general 9 # net8 3 # npgsqlrest 3 # orm 2 # pgroutiner 5 # plpgsql 6 # postgres 3 # postgresql 16 # rest 3 # software architecture 2 # software design 2 # software development 9 # sql 10 # stored procedure 1 # tool 5Feb 12, 2024PgRoutiner Documentation
PgRoutiner Documentation
Read more...Feb 12, 2024PgRoutiner Code-Gen
PgRoutiner Database Management
Read more...Feb 11, 2024PgRoutiner Blog
Database-First Tool for Development With .NET And PostgreSQL Native Build
Read more...Feb 11, 2024PgRoutiner Concept
PgRoutiner High Level Concept
Read more...Feb 11, 2024PgRoutiner Database Management
PgRoutiner Database Management
Read more...
\ No newline at end of file
diff --git a/index.html b/index.html
index 1f3118be..01edc303 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-VB-Consulting - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
no-nonsense software development and consulting
Get the most out of the world's most advanced open-source full-stack eco-systems
featured
NpgsqlRest is Automatic REST API for PostgreSQL Databases 🐘
PgRoutiner Command-Line Tools for PostgreSQL Databases and .NET 🐘
Lightweight, Zero-Dependency, PostgreSQL Tool for Node.js and NPM
What is Micro ORM 📖
Blog Article on PostgreSQL Arrays 🐘
Blog Article on PostgreSQL Paging Benchmarks 🐘
Blog Article on the Common Sense Software Design 🗄️
open-source tools
NpgsqlRest
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Learn morePgRoutiner
Database-First Development with .NET and PostgreSQL
Learn moreRazorSvelte
Cybernetically Enhanced Svelte Web Apps Integradted With ASP.NET Web Forms
Learn moreNorm.Net
Norm.Net Is An Innovative And High-Performance Database Access Micro ORM For .NET
Learn moreXUnit.Npgsql
XUnit.Npgsql Unit Tests For PostgreSQL With XUnit And .NET
Learn morepgmigrations
Lightweight, Zero-Dependency, PostgreSQL Tool for Node.js and NPM
Learn morePostrgeSQL Schema Tools
Set Of Open-Source PostrgeSQL Functions To Manage Database Schema
Learn more
blogs
May 10, 2024Transaction Script DDD vs SQL
Transaction Script DDD vs SQL
Read moreMay 4, 2024Common Sense Software Design
Common Sense Software Design Approach for RDBMS-backed Type of Software
Read moreMay 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read moreMay 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read moreMay 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read moreMar 20, 2024How DDD is screwing up your SQL
How DDD is screwing up your SQL
Read moreFeb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read moreJan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read moreNov 6, 2023Execute Custom Function For Each Record
PostgreSQL crazy experiment with the record type.
Read moreOct 10, 2023Custom Temporal Tables in PostgreSQL
PostgreSQL script that implements temporal tables without extension.
Read more See All Blogs
\ No newline at end of file
+VB-Consulting - VB-Consulting
- NpgsqlRest
- Norm.Net
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
no-nonsense software development and consulting
Get the most out of the world's most advanced open-source full-stack eco-systems
featured
NpgsqlRest is Automatic REST API for PostgreSQL Databases 🐘
PgRoutiner Command-Line Tools for PostgreSQL Databases and .NET 🐘
Lightweight, Zero-Dependency, PostgreSQL Tool for Node.js and NPM
What is Micro ORM 📖
Blog Article on PostgreSQL Arrays 🐘
Blog Article on PostgreSQL Paging Benchmarks 🐘
Blog Article on the Common Sense Software Design 🗄️
open-source tools
NpgsqlRest
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Learn morePgRoutiner
Database-First Development with .NET and PostgreSQL
Learn moreRazorSvelte
Cybernetically Enhanced Svelte Web Apps Integradted With ASP.NET Web Forms
Learn moreNorm.Net
Norm.Net Is An Innovative And High-Performance Database Access Micro ORM For .NET
Learn moreXUnit.Npgsql
XUnit.Npgsql Unit Tests For PostgreSQL With XUnit And .NET
Learn morepgmigrations
Lightweight, Zero-Dependency, PostgreSQL Tool for Node.js and NPM
Learn morePostrgeSQL Schema Tools
Set Of Open-Source PostrgeSQL Functions To Manage Database Schema
Learn more
blogs
May 10, 2024Transaction Script DDD vs SQL
Transaction Script DDD vs SQL
Read moreMay 4, 2024Common Sense Software Design
Common Sense Software Design Approach for RDBMS-backed Type of Software
Read moreMay 4, 2024NpgsqlRest v2 Update 🐘🔥
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read moreMay 4, 2024NpgsqlRest Update 1.6.2
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read moreMay 4, 2024PostgreSQL Arrays 🐘
PostgreSQL Array Example
Read moreMar 20, 2024How DDD is screwing up your SQL
How DDD is screwing up your SQL
Read moreFeb 16, 2024PostgreSQL Paging Benchmarks
PostgreSQL Paging Benchmarks
Read moreJan 23, 2024NpgsqlRest NuGet Library
Automatic REST API for PostgreSQL Database as .NET8 Middleware
Read moreNov 6, 2023Execute Custom Function For Each Record
PostgreSQL crazy experiment with the record type.
Read moreOct 10, 2023Custom Temporal Tables in PostgreSQL
PostgreSQL script that implements temporal tables without extension.
Read more See All Blogs
\ No newline at end of file
diff --git a/norm.net/benchmarks/index.html b/norm.net/benchmarks/index.html
index 08c52ac2..a62ff7d2 100644
--- a/norm.net/benchmarks/index.html
+++ b/norm.net/benchmarks/index.html
@@ -1,4 +1,4 @@
-Norm.NET Perfomance Benchmarks - Home
- NpgsqlRest
- RazorSvelte
- PgRoutiner
- XUnit.Npgsql
- pgmigrations
- PostrgeSQL Schema Tools
blogs
- ALL BLOGS
- Transaction Script DDD vs SQL
- Common Sense Software Design
- NpgsqlRest v2 Update 🐘🔥
- NpgsqlRest Update 1.6.2
- PostgreSQL Arrays 🐘
- How DDD is screwing up your SQL
- PostgreSQL Paging Benchmarks
- NpgsqlRest NuGet Library
- Execute Custom Function For Each Record
- Custom Temporal Tables in PostgreSQL
norm.net
- Norm.Net
- example project
- benchmarks
- changelog