protected override void OnPaint(PaintEventArgs pe)
{
...
pe.Graphics.DrawImage(sprite, new Point(0, 0)); // 0,0 левый верхний угол
...
}
Bitmap sprite = new Bitmap("путь_к_вашему_файлу.png");
Первый зашёл - первый ушёл. Дозапись в конец файла с фиксированным количеством текстовых блоков.дозапись это простая операция, не затрагивает остальной файл, но что означает первый ушел? удаление первых записей? с точки зрения текстового файла это его полная перезапись
dd if=/dev/sda of=/dev/zero bs=1024k status=progress
Таким образом, если база данных вмещается в оперативную память полностью, может быть целесообразно ее загружать при старте веб-ноды, а весь код строить на том что база данных находится в памяти, само собой придется вручную заботиться об индексах (map например вместо массива позволит быстро выдать объект по ключу) и вся забота разработчика в таком случае сводится к синхронной записи изменившихся данных в базу данных.
Такой подход оправдан и дает максимальную производительность, но усложняет масштабирование, когда оно наконец понадобится. Имеет смысл только если в идеологии сервиса модификаций не много или вообще отсутствует, а источник этих изменений не многопользовательский, в этом случае база данных может выродиться в хранение в файлах в виде сериализованных массивов (json/bson/protobbuf/...) но не один файл на все а много мелких на каждый объект. Индексы в таком случае строить нужно в оперативной памяти при загрузке данных и их модификации.
p.s. напоминаю что стоимость оперативной памяти на серверах почти на порядок превышает стоимость места на дисках, а значит злоупотреблять такими подходами очень дорого