Announcement Announcement Module
No announcement yet.
Advice on best performance strategy Page Title Module
Move Remove Collapse
Conversation Detail Module
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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!

  • #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?