Today, after I built the 128-bit integer, I started a massive refactoring of the ticker plant code to swap out the uint64_t "security ID" from the instrument master database with a std::string that is the name of the instrument. The reason really boils down to dependencies, and while it's not perfect, it's better than the uint64_t.
If we have a database that is the sole dispenser of the security ID, then every time I need to make a new one, I have to go to that database. In theory, this is a good idea, but in practice - for a ticker plant, it's a horrible idea. With thousands of ticks a second, not being able to get one means a several second delay in the processing of that one tick in order to get the security ID.
This isn't rocket science, but it's also unnecessary. Every downstream system can get the security ID from the database - or have it make one for them, if they need it. What the ticker plant provides should be a nice, concise, simple, fast data set that is a source of ticks.
The changes are really quite profound. Now, instead of a nice 64-bit integer to use to uniquely identify the security, I have a string. With this string, and the 128-bit integer class I made, I can still use it in most of the same ways, but the speed is taking a hit for certain. I'm just not sure how much until I get everything in and start testing.
Shouldn't take too much longer... I hope.