title: How to correctly partition a table in real-time in kdb?
body: <p>I have a C application that streams data to a kdb memory table all day, eventually outgrowing the size of my server RAM. The goal ultimately is to store data on disk, so I decided to run a timer partition function to transfer data gradually. I came up with this code:</p>
  
  <pre><code>part_timer : { []
      (`$db) upsert .Q.en[`$sym_path] select [20000] ts,exch,ticker,side,price,qty,bid,ask from md;
      delete from `md where i&lt;20000
  }
  
  .z.ts: part_timer
  .z.zd: 17 2 6i
  \t 1000
  </code></pre>
  
  <p>Is this the correct way to partition streaming data in real-time? How would you write this code? I'm concerned about the delete statement not being synchronized with the select.</p>