-
Jul 19th, 2011, 04:13 PM
#1
Advice on best performance strategy
I have a scenario where I have to match records within a table on a FIFO basis. The table structure looks like below -
id, request_type, qty, crtd_ts
10, buy, 15, 15:00
12, buy, 6, 15:25
15, sell, 5, 15:35
16, sell, 6, 16:00
18, buy, 15, 16:30
19, sell, 20, 16:33
20, sell, 4, 17:45
22, sell, 1, 18:02
Given the sample data above - the idea is to be able to match records by buy and sell request types, starting with the oldest, and jumping through records orderly if necessary. So, in this case -
id(10), will match with id(s) 15, 16 and 19
id(12), will match with id 19
id(18), will match with id(s) 19, 20 and 22
This table will have many records, and I am wondering what my best approach is.
My original plan was to have a db reader and the writer will match accordingly. The challenge (given the FIFO requirement) is that this will be a single-process, single-threaded implementation, and it will be slow.
Will a master-slave implementation work ? Any other recommendations ?
Thanks for any tips!
-
Jul 22nd, 2011, 04:11 AM
#2
Presumably it is actually pretty fast to read the data and net off the trades (that's just arithmetic), and the slowness comes in the backend processing? Maybe it would make sense to have an ItemReader that creates items that are actually groups of trades that net off each other (precisely or with some carry, maybe), and then farm out the backend processing of that to parallel processors?
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules