Справочная информация
Много работы было уделено оптимизации проектирования базы данных, особенно в области наиболее оптимальных способов чтения и записи данных с дисков (как шпиндельных, так и SSD).
Знания, полученные в результате работы, позволяют предположить, что чтение и запись на границах блоков, соответствующих размерам блоков файловой системы, на которой вы работаете, является наиболее оптимальным подходом.
Вопрос
Допустим, я работаю в среде с относительно небольшим объемом памяти и хочу использовать небольшой файл с отображением памяти объемом 32 МБ для чтения и записи содержимого огромного файла объемом 500 ГБ.
Если бы я использовал механизмы NIO Java, в частности MappedByteBuffer (механизм отображения файлов в памяти Java), мне нужно было бы позаботиться о выполнении операций чтения и записи на границах блоков (например, 4 КБ) в памяти перед сопряжениемданные, которые мне нужны, или я могу просто выполнить R / W операции в любом месте, где я хочу, и разрешить операционную систему, логику подкачки виртуальной машины, файловую системуи встроенное ПО хранения выполняет оптимизацию операций и отбраковку дополнительных данных блока, которые мне не нужны по мере необходимости?
дополнительная информация
Причина вопроса заключается вв дизайне базы данных я вижу этот навязчивый акцент на оптимизации блоков до такой степени, что, кажется, не существует мира, в котором вы когда-либо просто читали бы и записывали данные без концепции блока.
Что меня смущает, так это то, что файловая система - это та, которая обеспечивает выполнение блоковых операций, зачем моему приложению более высокого уровня беспокоиться об этом?Если я хочу получить 17 631 байт со смещением 71, я не могу просто взять их и прочитать их, или мне действительно быстрее понять, что операция чтения начинается в блоке 0 и пересекает границы блоков 0, 1и 2 ... прочитать все эти 3 блока во внутренний байт [], а затем отбросить 17 631 байт, которые я хотел в первую очередь?
Если литература по проектированию БД не была настолько религиознойэта идея блока, вопрос никогда бы не пришёл мне в голову, но, поскольку это так, мне интересно, если я упускаю здесь критическую деталь файловых систем WRT и оптимального ввода-вывода блочного устройства.
Спасибо зачтение.