What is our primary use case?
I have been using PostgreSQL for the last two years.
I am using PostgreSQL in two projects. The recent one is in the financial domain where the SQL database is PostgreSQL and we are performing a significant amount of CRUD operations.
We have implemented RAG in our agentic AI application. For RAG we are using PG vector. For our day-to-day SQL communication and all CRUD operations, we maintain user data and all transactions because my product is in the financial domain. PostgreSQL is working very well, and I have never seen any performance issue.
Our domain is financial, so we definitely need to maintain transactions, maintain state, and ensure persistence. We are using a SQL database and from SQL we are using PostgreSQL. The first reason is that PostgreSQL is capable enough to handle large transactions of data. Second, we are using a pooling mechanism where we have put some open connections within a buffer for handling high-scale data and use that connection to communicate with PostgreSQL and retrieve the data.
Initially, we decided to go with a different database. When we were doing more than 50,000 transactions in a minute with that database, we were getting a lot of latency issues. Threads got blocked and got abruptly closed unwantedly. We decided to move to PostgreSQL after doing extensive research. Now, we are doing the same level of transactions in PostgreSQL, around 100,000 transactions, and we are getting good throughput with no latency.
If a customer pays for something and something goes wrong where the amount gets debited but does not reflect on the e-commerce website, the customer is going to raise a ticket. While raising a ticket, it hits our customer service team. The customer service team has to investigate the issue and they are dependent on our engineering team. There is a whole cycle which is included for a single transaction failure. Before we were using PostgreSQL, we had to invest a lot of time into customer service. We had to ramp up our customer service resources, and overall, a lot of bandwidth was required. Now there are very few transactions that fail. Overall, we have a very small customer service team and a good engineering team with no overburden or bandwidth issues. This is definitely giving positive results on product efficiency and product cost.
What is most valuable?
The best feature is performance, because of which I decided on PostgreSQL. I have also enabled the PG vector plugin on top of PostgreSQL. I have the opportunity to use two different features and two different flavors in a single product, which is the best thing about PostgreSQL.
Initially, we had some hiccups around the performance part, but later we did indexing in PostgreSQL and now it is working very well. Even when we are doing 100,000 transactions in a day, PostgreSQL is working excellently.
The interface is another best feature. If I need to do any query, I simply install the plugin on my local, which is pgAdmin. Through pgAdmin, I am able to communicate with PostgreSQL and execute all my SQL queries. I am getting a better UI with PostgreSQL as the backend, which is also one of the best options.
PG vector is also very strong from PostgreSQL where I have implemented RAG and on a daily basis, I inject thousands of pages of PDF. More than 100 PDFs are coming into my system and one PDF is around 1,000 pages. We are injecting them into PostgreSQL and converting them into dimensions and inserting them into PG vector. The level of transactions we are doing on a daily basis is substantial, and we are getting very good throughput and low latency from PostgreSQL.
When we were doing more than 50,000 transactions in a minute with the previous database, we were getting a lot of latency issues with threads getting blocked and abruptly closed unwantedly. After doing extensive research, we decided to move to PostgreSQL. Now, we are doing around 100,000 transactions in PostgreSQL and we are getting good throughput with no latency.
What needs improvement?
The only thing for PG vector is if the dimension limit could be increased. Currently, the dimension limit is around 1,000 to 1,052. If I need to increase the dimension to 3,000 or 5,000, that option should be available.
The UI is also an option if I could get something similar to Snowflake, which has a cloud-type database with their own UI and everything. I understand it is a SaaS product. I am not sure if in the future PostgreSQL will come with the same approach. This is one of my recommendations.
What do I think about the stability of the solution?
I have never seen any performance issue in PostgreSQL.
Until now, we have not faced any issues.
What do I think about the scalability of the solution?
Initially, we decided to go with a different database. When we were doing more than 50,000 transactions in a minute with that database, we were getting a lot of latency issues with threads getting blocked and getting abruptly closed unwantedly. We decided to move to PostgreSQL after doing extensive research. Now, we are doing the same level of transactions in PostgreSQL, around 100,000 transactions, and we are getting good throughput with no latency.
We have auto-scalability enabled. By default, based on the demand, it automatically scales.
How are customer service and support?
If a customer pays for something and something goes wrong where the amount gets debited but does not reflect on the e-commerce website, the customer is going to raise a ticket. While raising a ticket, it hits our customer service team. The customer service team has their own processes to investigate the issue. They are dependent on our engineering team. There is a whole cycle which is included for a single transaction failure.
Before we were using PostgreSQL, we had to invest a lot of time into customer service and ramp up our customer service resources, and overall, a lot of bandwidth was required. Now there are very few transactions that fail. Overall, we have a very small customer service team and a good engineering team with no overburden or bandwidth issues. This is definitely giving positive results on product efficiency and product cost.
Which solution did I use previously and why did I switch?
Previously, I used Snowflake because it is a proper cloud solution and I thought it might be a better opportunity. The problem is that Snowflake is very costly. We switched to PostgreSQL because PostgreSQL is cheaper than Snowflake. Second, as a total cloud-based solution, Snowflake has shown performance issues many times while PostgreSQL has not shown any performance issue.
How was the initial setup?
We have auto-scalability enabled. By default, based on the demand, it automatically scales.
What's my experience with pricing, setup cost, and licensing?
I purchased from the marketplace, so licensing and pricing cost is acceptable. To be honest, there is a separate team who handles the cost of licensing everything. I have admin access on Azure and I took PostgreSQL from the Azure Marketplace. From the cost perspective, I am not aware of the exact cost, but right now it is within our budget. Even with doing 100,000 transactions right now within PostgreSQL, we are happy with PostgreSQL and not seeing that it is expensive or going out of budget.
Which other solutions did I evaluate?
I evaluated only Snowflake.
What other advice do I have?
If you need to do a lot of transactions on a daily basis and your traffic is very high for your products on a day-to-day basis, it is better to go with PostgreSQL rather than going with any independent SaaS solution because SaaS solutions have their own cost metrics and their own trade-offs. PostgreSQL is a very old and tested SQL database used in many products. I think it is better to use PostgreSQL. I would rate this product an 8 out of 10.
Which deployment model are you using for this solution?
Public Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?