Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

HFT can easily be 12000 transactions a minute with a requirement for each of these transactions to be very fast.

It's not (necessarily) about high throughput, but about low latency.



No real HFT system is doing a * database transaction * in the critical trading path. HFT systems are not built like web applications. They are typically built as a tight event loop, reading market data packets directly from the network card, doing a tiny bit of computation and then writing to a userspace TCP stack for order entry.

I guess you could be using MemSQL for post-order or trade analysis but then it would probably overkill since a lot of that can be done considerably slower.


Additionally 128 GB is just about 20 minutes worth of data.


That's just the free edition RAM limit...

But yes, actual HFT is not an accurate use-case, for any database product.


HFT firms have plenty of cash to buy the unlimited version.


HFT ain’t what it used to be.


I work for a dark pool ATS that is hit by HFT firms, and we routinely see flows greater than 12k transactions per minute. Ive been benchmarking a variety of compilers, db libs, drivers and platforms. So far, best perfomance ive gotten, single threaded, is I can write a single order to a man store table in MSQL in about 500 microsecs (that was from a .net core app running directly on the same server as MS SQL, ive been able to get comparable performance from a C++ app running on Linux with kernel bypass network IO). Mind, ive not tried to optimize the DB at all, this is purely comparing DB APIs. Worst Ive seen, all other things being equal is about 800 micros.


MSSQL? That's fast. Are you able to give any more details about the database server / net core code?


Can't share the code or schema, but can give a rough approximation of the setup.

We're experimenting with MSSQL's memory optimized tabled and native compiled stored procedures. My timings today, I was getting one call to our stored proc in the 300-400us range, that was inserting one record each into 2 tables.

Test setup for all of my scenarios are do all of the same DB ops, I'm alternating which libs I'm using. Best performance so far ive been able to get from linux talking to MSSQL has been using OTL on top of unixodbc with MS Driver 17. Mind these are physical servers sitting a few feet from a shared router.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: