Як казав один персонаж: "Мама любить швидкісь".
З ростом об'ємів оперативної пам'яті і зменшенням її ціни виглядає перспективним взагалі відмовитися від зовнішніх накопичувачів при виконанні програми. І використовувати зовнішні накопичувачі, як і було задумано на початку розвитку комп'ютерів, тільки для зберігання даних при вимиканні і завантаження даних в ОП при вмиканні комп'ютера.
Це дасть максимальну швидкість виконання.
Для прикладу: 1С-база на моєму підприємстві має розмір біля 10 Гб. Враховуючи, що розмір ОЗУ сервера 128 Гб, нема ніяких проблем розмістити цю базу в ОЗУ і на порядок зменшити затримкм, які викликаються дисковими операціями і запитами до БД.
Вже зараз можна створити віртуальний диск в ОЗУ, перенести туди базу і отрмати збільшення швидкості. Однак тут є свої особливості і підводні камені.
По перше. Потрібно вирішити проблему надійності. Потрібно подбати про своєчасне збереження даних на випадок раптової поломки чи вимкнення обладнання.
Один з підходів до цього - постійне журналювання операцій на диск.
Враховуючи, що постійний запис журнала - це послідовний запис на диск, що (на відміну від довільного запису/читання, яке характерне для роботи з базами даних) є доволі швидкою операцією, то журналювання майже не уповільнює роботу бази даних. Цей підхід можна розвивати і вдосконалювати.
Також можна спробувати використвувати технологію миттєвих знімків, але не для дисків, а для ОЗУ, які потім збергати на зовнішні накопичувачі.
Але використання віртуального диска в ОЗУ тягне за собою використання всієї дискової інфраструктури операційної системи - драйверів, файлової системи і т.д. Це цілий шар програмного забезпечення, який додає складності. Крім того у цій системі можливі зовнішні переривання. Це збільшує вірогідність помилок і вносить свої затримки.
Тому для отримання максимального прискорення було б добре змінити архітектуру програм з урахуванням великого швидкого ОЗУ і повільних зовнішніх накопичувачів, доступ до яких повинен бути обмежений. Можливо, можна було б відмовтися також і від використання SQL (який втрачає ефективність при складних запросах) на користь прямих запросів до структур даних.
А що ж робити з тими мільйонами програм, які вже написані?
Для наявних програм можна уявити програмну прослойку, яка повністю ізолює програму від зовнішніх накопичувачів і переносе всі дії з даними в ОЗУ. Це може бути щось типу віртуальної машини чи контейнера, куди встановлюється програма.