
Why PostgreSQL Is the Right Database for Small Operations
Your seafood operation does not need a data warehouse. It needs PostgreSQL, and probably nothing else.
The Spreadsheet Ceiling
Every small business starts with spreadsheets. Inventory tracking, cost calculations, customer lists, order history — it all lives in Excel or Google Sheets. For a while, this works fine. Then it doesn't.
At Pacific Cloud Seafoods, we hit the spreadsheet ceiling about eighteen months in. The problems were predictable: two people editing the same inventory sheet created conflicts. Formulas broke when someone inserted a row in the wrong place. Historical data was unreliable because cells got overwritten with no record of what changed. And the sheets were getting slow — a few thousand rows of fish ticket data with VLOOKUP chains made the whole thing sluggish.
The real breaking point was when I needed to answer a question that should have been simple: what was our average cost per pound for sockeye salmon across all purchases last season, broken down by fisherman? In a spreadsheet, that is a pivot table built on data spread across twelve monthly tabs with inconsistent column headers. In a database, it is one query.
Why Not SQLite
SQLite is a fantastic database. I use it for personal projects and prototyping. But for a small business with more than one person who needs to read and write data, it falls short in one critical way: it does not handle concurrent writes well. SQLite uses file-level locking. When one user is writing, everyone else waits.
In a seafood operation, you have someone logging inventory at the processing facility while someone else is entering orders at a desk while a third person is updating customer records from the road. That is three concurrent writers, and SQLite will either queue them (slow) or throw locking errors (broken). PostgreSQL handles concurrent access as a fundamental feature. It was designed for it.
PostgreSQL Does Everything
Here is what I mean by "probably nothing else." PostgreSQL is not just a relational database anymore. It is a platform that covers use cases most small businesses would otherwise need three or four separate tools for.
Relational data. Orders, customers, products, fishermen, invoices — the bread and butter of any business database. PostgreSQL handles this with decades of battle-tested reliability. Foreign keys keep your data consistent. Constraints prevent bad data from getting in. Transactions mean that a multi-step operation either completes fully or not at all.
JSONB for flexible schemas. Not every piece of data fits neatly into rows and columns. Product metadata varies by species — a whole fish has different attributes than a smoked fillet. Customer preferences are unpredictable. Shipping carrier responses come back as JSON. PostgreSQL's JSONB column type lets you store structured but flexible data alongside your rigid relational schema. You can index it, query it, and join it with regular tables. No need for a separate document database.
Full-text search. Need to search across product descriptions, customer notes, and order comments? PostgreSQL has built-in full-text search with ranking, stemming, and language support. For a small operation, it eliminates the need for Elasticsearch or Algolia. I use it for searching our fish ticket records — finding all deliveries of "king salmon" including variations like "chinook" and "king" across thousands of records.
pgvector for AI features. This is where it gets interesting. pgvector is a PostgreSQL extension that stores and searches vector embeddings — the numerical representations that power semantic search, recommendation systems, and RAG applications. I use it in our agent memory system to store embeddings of business documents, conversations, and operational notes. When I ask an AI agent a question about our business, it searches those vectors to find relevant context.
A year ago, using vector search meant setting up Pinecone or Weaviate — separate services with separate costs and complexity. Now it is an extension on the database I already run. One database, one backup strategy, one set of credentials.
Real Examples
Inventory tracking. Every incoming fish lot gets a row in the lots table: species, weight, price, fisherman, date, location, quality grade. Every outgoing shipment references those lots. At any moment I can query current inventory by species, calculate weighted average cost, or trace a customer's order back to the exact lot and fisherman. Try doing that reliably in a spreadsheet.
Traceability. Our traceability chain is a series of foreign keys. A customer order references a shipment, which references processed products, which reference raw lots, which reference a fisherman and catch event. One query can walk the entire chain from plate to boat. This is not fancy technology — it is relational database design doing exactly what it was built for.
Cost analysis. Every cost component — raw fish, processing labor, packaging, cold storage, shipping — gets logged with timestamps and lot references. Seasonal cost analysis, margin calculations by product and channel, fisherman payment reconciliation — these are all SQL queries that run in milliseconds. The Fish Cost Calculator I built pulls from these same tables through an API.
HACCP compliance. Temperature logs, receiving records, and processing checklists all live in PostgreSQL. When a health inspector asks for records, it is a date-range query with a CSV export. No digging through filing cabinets or scrolling through spreadsheet tabs.
The Setup Is Not Hard
The biggest objection I hear from other small business operators is that databases are complicated. And historically, that was fair. Setting up PostgreSQL used to mean configuring a Linux server, managing backups, and knowing SQL.
Today, managed PostgreSQL services from Supabase, Neon, or Railway give you a database in thirty seconds with automatic backups, a web UI for browsing data, and connection strings you can plug into any application. The cost for a small operation is typically free or under twenty dollars a month.
You do need to learn basic SQL. But basic SQL — SELECT, INSERT, UPDATE, JOIN, WHERE, GROUP BY — is not harder than learning advanced spreadsheet formulas. It is probably easier, and the skills transfer to every database you will ever use.
When You Outgrow It
The honest answer is: you probably will not outgrow PostgreSQL. Companies processing millions of transactions per day run on PostgreSQL. Instagram ran on it. The limits of PostgreSQL are so far beyond what a small business needs that you will hit every other scaling challenge — hiring, logistics, market demand — long before your database becomes a bottleneck.
That is the real argument for PostgreSQL. It is not just good enough for now. It is good enough for whatever your business becomes. You pick it once, learn it once, and it grows with you. No migration to a "real" database later. PostgreSQL is the real database.
If you are running a small operation on spreadsheets and feeling the friction, the switch to PostgreSQL is the single highest-leverage infrastructure decision you can make. Everything else — better reporting, AI features, traceability, compliance — becomes easier once your data has a proper home.


