IT Hare on Soft.ware

Disclosure: On this site you won’t find specific advice on “how to call function xyz()”. Interpreting C++ ARM and #pragma dwim is also out of scope.

We’re treating our readers as intelligent beings who can use Google and/or StackOverflow, where all such specific questions were answered more than once.

What you will find is opinions on all the aspects of software development (from UI to scalability, reliability and security) for all kinds of systems (from large-scale systems to embedded ones), the reasoning behind those opinions, and tons of practical observations, which may help you to choose what you really need for your specific task.

Your mileage may vary. Batteries not included.


OLTP. Compiling SQL Bindings.

Quote: “If we’re speaking about millions transactions per day over just a few hundred of different SQL statements – compiling those statements a million times (instead of a few hundred times) will be a dramatic waste of resources.”
Another Quote: “Once upon a time, I observed the largest C++ file in my career – it was a 30’000-line file(!) consisting merely of ODBC bindings (and that was just for 300 or so SQL statements)”

Historical Data in Databases. Audit Tables. Event Sourcing

Quote: “99% of reporting requests and 99.9% of analytics is purely historical”
Another Quote: “Information within the audit table should be sufficient to validate/justify current state”

Choosing RDMBS for OLTP DB

Quote: “As the RDBMS keeps modifying its tables – the tables gradually degrade”
Another Quote: “As we can see from the table above – choosing your RDBMS it is not as easy as it might seem.”

Ultimate DB Heresy: Single Writing DB Connection. Part II. Gradual Scalability. All the way from no-scale to perfect-scale.

Quote: “And after this split of USERS table, the system has achieved perfectly linear scalability.”
Another Quote: “Start with a simple single-write-connection DB, with reporting running off the same DB”

Ultimate DB Heresy: Single Modifying DB Connection. Part I. Performance (Part II. Scalability to follow)

Quote: “Dealing with transaction isolation is very far from being a picnic”
Another Quote: “One of such real-world systems was consistently processing over 30M real-world write transactions/day over one single DB connection, supporting ~100K simultaneous players.”

NoSQL vs SQL for MOGs

Quote: “in real world, after deployment, most of the changes in DB structure are about widening columns and adding the new ones”
Another Quote: “For documents and BLOBs, NoSQL is a natural habitat”

Distributed Databases 101: CAP, BASE, and Replication

Quote: “The worst case of inconsistency happens when row X in database A is modified (by a Client connected to datacenter A), and the same row X in database B is independently modified too (by a Client connected to datacenter B).”
Another Quote: “One way to avoid reports affecting operational DB, is via creating a read-only replica of our main operational DB – and running our reports off that replica.”