We are looking for senior Ph.D. students for a summer internship in the storage, indexing, concurrency, transactions space (data systems group, MSR Redmond, in-person). Ping me if you are interested, and apply at https://t.co/Imt436rVR9. Thanks!
Buckle up because we're crashing into the new year with my annual database retrospective: License change blowbacks! @databricks vs. @SnowflakeDB gangwar! @DuckDB shotgun weddings! Buying a college quarterback with database money for your new lover! https://t.co/NnFHGElFNy
garnet-server, Microsoft's RESP (Redis-alike) server built on the "FASTER" tech is now available as a .NET global tool, making it one line to install it, then just "garnet-server" to run it. Very nice for RESP geeks: https://t.co/03M4T1vYcX
The Data Systems group at MSR Redmond @MSFTResearch is now looking for in-person summer 2025 interns in the data systems and exploration areas! Interested PhD students (US and international) can apply at https://t.co/uwMsFdSA6k -- thank you!
At #VLDB2024, check our Bf-Tree, our high-perf B-Tree design optimized for small key-values. It uses a mini-page abstraction to cache reads/writes and a variable-length buffer pool to maintain them. See https://t.co/xNsPk6kGfa and attend session C3 at 3:30pm today to learn more!
@FilasienoF @MarkCallaghanDB @sunbains Transactionally moving data between disk/memory is quite fascinating indeed! Also check our recent related work at https://t.co/FmCmCjdvSa. The C++ code of F2 is open source (still a PR) in the FASTER repo: https://t.co/22YbbD7y0i (this is a hash based KV though, not a B-Tree).
@FilasienoF@sunbains Thanks! Your comment re: relevance to paged structures is spot on. The Bf-Tree was inspired by our prior work in the other direction: FASTER's hybrid log optimizes record-granularity paging for external hash KV. We wanted to get similar benefits for page-oriented B-Tree designs.
@jodydonetti@marcgravell@davidfowl Related to cold start -- FASTER and Garnet support checkpoint/recovery so you could have your cache instantly rehydrate after a process failure. Not sure IDistributedCache supports this, but we have seen this to be useful in other scenarios.
@marcgravell@jodydonetti@davidfowl You can use FASTER to store arbitrary live C# objects directly as well, using the GenericAllocator. That will allow reading and mutating without cost. You will however pay the serialization cost when spilling to disk, or reading from disk.
@davidfowl Damn,
Garnet sitting on top of performance benchmarks when compared to Redis, KeyDb and Dragonfly ... If this doesn't scream Microsoft is dead serious about performance of .Net Core, I don't know what does.
https://t.co/kcvRo76oJq
@neuecc@jodydonetti@marcgravell Yes, the performance with Garnet custom commands would be extremely high for this use case. Second best would be multi/exec (which by design incurs a lot of repeated parsing and bookkeeping in the critical path). And don't get me started on Lua ... :)
@marcgravell@jsneedles@jodydonetti@neuecc The fact that you used the serialization API means there is still a lot of gas left in the tank for improvement. For blittable keys and values, we have versions that do not require serializers at all. And those code paths are way faster, particularly for disk. This is exciting!