4 ms·
I can't say too much but I work for a company that supplies software to businesses that need to take thousands of transactions a minute on data that's got to be
by zwischenzug 16y ago
I can't say too much but I work for a company that supplies software to businesses that need to take thousands of transactions a minute on data that's got to be current with real-time and frequent price changes streaming data to 10s of thousands of people and third parties that are themselves big companies.
Downtime is not tolerated - I've been surgically torn apart by boards of major listed corporations over small amounts of downtime (it was something of a pleasure to be so professionally abused, strangely).
For all this we have found the best solution to use a monolithic DB with SAN-based replication, C libraries to connect to the SQL db, and a process-based custom-built application server with an embedded (unfashionable) scripting language for ease.
None of these things are fashionable, but no-one's beaten our performance.
The trouble (from my perspective) with all these social sites is that downtime is tolerated (Facebook is always screwing up; I consider them a partial joke technically) and the data is easily distributed (think Google) because the demands on consistency are low.
I'm sure our time will be up one day, but you go trendy at your peril. I'm an advocate of functional programming languages, but it's not realistic to get hundreds of these guys to switch seamlessly and reliably to a new paradigm without serious pain. Ditto NoSQL.
- fendale 16y agoCan you say what DB you are running? Is it Oracle?
- tom_b 16y agoNot unless they know some Oracle incantations I've not heard of. I'm going to guess some home-rolled column store similar to KDB. [EDIT] re: Oracle stuff I've not heard of - there is tons of Oracle scale/performance stuff I've never even had to think about. I've worked somewhere with KDB+ in place to handle streaming market price data and interviewed at another investment bank where it was used as well. So my guess is based more on what I've seen and read rather than knowing you couldn't build such a system on top of Oracle.
- zwischenzug 16y agoCustomers pressure us to use Oracle but we resist. I'm sure you can make it fast. Our argument is: why switch from what works; then it's "want to pay for it and be the first to use it"?
- fendale 16y agoI've seen some Oracle systems push some big data around and handle pretty high trans per second, but I have never worked on any of these financial systems which seem to require more speed and trans per second than any system I have ever built or worked on. Personally I would love to see if Oracle can match these other systems out there, purely from an interest point of view!
- balakk 16y agoProbably Sybase ASE with Tcl as the scripting language. I've heard good things about Sybase replication capabilities.
- zwischenzug 16y agoHow did you get tcl :-0? No-one's even mentioned the DB, and it's a major DB system owned by a three-letter company...
- fendale 16y agoSurely it's not SAP (maxDB)? Never heard of it before I did some googling. Failing that the only DBs I can think of are Oracle, DB2, SQLServer and Sybase before going to the open source ones.
- zwischenzug 16y agoDon't think anyone's reading this anymore, so I'm safe: it's Informix.
- tom_b 16y agoSounds HFT to me. Plus functional programming. KDB like? Quit teasing Out with it. Sounds like fun with lots of real hackability and responsibility built in. Would love to hear more of what you can share. You mention a SQL db - have you guys put something together of your own or are you using a pre-rolled db?
- zwischenzug 16y agoWe tried FP but it didn't take with the more average dev in our number. It is fun, can be a lot of pressure, and the sheer quantity of issues and the speed with which they must be dispatched means I always have to learn and I often screw up analysis. Humility and the ability to prod people who know stuff and grok what they say quickly is essential. We use a major DB (not Oracle). Again, think unfashionable, think speedy. Sorry, don't mean to tease - I just don't want people to be able to track me down.
- fendale 16y agoWell, I can't imagine SQL Server handling your requirements, and I find it unlikely a mission critical system like this will use MySQL or Postgres (primarily because Enterprises like to pay a lot for that 'security' of support), so I'd shoot for Sybase if its not Oracle? The reason I ask is because I am a pretty highly skilled Oracle guy, and some of the numbers I have seen around financial systems just seem so fast and big volume transactions per second. Maybe I could get Oracle to do them, but then the zero downtime scares me somewhat as until very recently, keeping Oracle up all the time, even through application upgrades is fairly tricky!
- zwischenzug 16y agoActually, the db we use had similar problems. Schema changes require at least _some_ downtime, if only to lock the tables. The trouble is less the number of transactions than the linkage between each transaction and other transactions' liabilities in the system. In effect, serious DB's are in effect in-memory updates (some of our bigger customers run with no logical log write to disk on commit (really!)) running on 128-core Sun boxes (principal and failover). You can get through a lot of tps and the saving on dev cost and maintenance through this monolithic simplicity is great.