Я хочу прочитать действительно огромное значение, хранящееся в породе. Можно ли прочитать его по частям? Как чтение содержимого файла в фиксированный буфер ...
например, у меня есть значение 500 МБ, то есть файл, сжатый zlib. так как это серверная программа, я не могу выделить 500 МБ для каждого соединения (500 МБ для значения, которое может быть больше в любом случае, а также контекст SSL, информация для аутентификации и т. д. c ...).
А также, эти значения имеют значение для протокола, поэтому я не могу его разделить. Согласно документации, размер значения должен быть меньше 3 ГБ. Я не думаю, что какая-либо серверная программа выделяет этот размер для одного соединения.
Я могу привести несколько примеров, которые могут быть полезны:
- создание файловой системы поверх RocksDB
- Хранение звуков, изображений, видео, ... в приложении обмена сообщениями
Допустим, такой пример:
Slice partialSlice;
db->Get(opt,"ac154df568bb874", &partialSlice, 256*1024); /// read 256KB at once
socket.write(partialSlice.data(), 256*1024);
while(partialSlice.HaveRemaining) {
/// repate it to get all of data...
}