-
Notifications
You must be signed in to change notification settings - Fork 6
Build command line tool that can create a pre-built leveldb database to enable fast startup #6
Comments
What if we added the ability for a changeserver to dump out its own database so that another changeserver can import it? That might be easier to control than relying on PG -- one changeserver can bootstrap another. (Might be tricky to implement in some deployment environments, however.) |
The reason I phrased it the way I did is just the operational aspect: I'd like to "cook" a leveldb database and have it warm but on something like s3, rather than doing an on-demand snapshot and then loading it from a peer changeserver. That said, I was also imagining this as a command line wrapper around the changeserver internals to avoid re-inventing the wheel. All that said, I don't per se care that much about the implementation as long as there's a clean set of operational steps to get a warm db. |
@gbrail I've done an initial port to rocksdb using gorocksdb to enable this. I'd love you to give it a once over and get your opinion. The storage & changeserver tests are all green, but I'm not sure your degree of confidence in them. |
Whoa -- big change, but probably a good one. I've worked with RocksDB before and found that it's reliable and fast. The I'm curious, though -- the current "storage" interface just calls LevelDB (Too many years of Node.js programming has made me a stickler for On Sun, Nov 13, 2016 at 11:38 PM, Kris Wehner [email protected]
Greg Brail | apigee https://apigee.com/ | twitter @gbrail |
My instinct is very much to let someone else smart who's focused on it maintain the C code. Since there's a strong, community driven database interface that we don't have to maintain, it lets us focus on the app code. In particular, my engineers don't tend to be C developers, and with gorocksdb, everything (including the comparator functions) is in golang, so it's much more accessible. With all due respect to the node.js community, I don't think that instinct applies here :). Obviously we need to keep an eye on library quality, etc, but I'm very much a firm believer in using the community implementations. |
Go-rocksdb looks very nice. Let me take a look at your changes. I want to BTW RocksDB has column families -- I may want to extend this work to use a On Mon, Nov 14, 2016 at 10:00 AM, Kris Wehner [email protected]
Greg Brail | apigee https://apigee.com/ | twitter @gbrail |
In order to support clients with long offline durations, we need to maintain a very large local leveldb (for us, 7-10 days of WAL), but we cannot afford to take the time hit of loading that WAL at startup time.
What we need to do is:
The text was updated successfully, but these errors were encountered: