Крім ігор та (в основному статистичних) досліджень, з якими я не маю досвіду, здається, що доступ до бази даних та операції є однією з небагатьох областей, де неправильні рішення призводять до дуже великих результатів. Я впевнений у більш потужних абстракціях баз даних щодо коду, і вважаю linq, який пов'язує операції з базою даних з мовою програмування, надаючи всі інструменти мови (перевірка типу, перевірка синтаксису, всі речі, які вам подобаються ваша мова програмування), але все-таки даючи вам багато сил, щоб робити те, що ви хочете, абсолютно приголомшливо. На жаль, це все ще не завжди працює. Це означає, що якщо рівень абстрагування неправильно оптимізується, і ви можете чекати секунд замість мікросекунд або хвилин замість секунд для свого результату. Оскільки це дуже помітні часи, вам доведеться їх оптимізувати, або ваша програма не працює ": продуктивність стає найбільшою проблемою вашої програми. Це означає, що вам потрібно наблизитися до металу та оптимізувати руку.
Коли ми доходимо до того, що маніпулювання великими наборами даних займає, наприклад, 3 мс при руці, і 100 мс, коли ви дозволяєте шару абстракції зробити це за вас, будь-якими способами, нехай шар абстракції обробляє це за вас, тому що ви можете бути в 30 разів повільніше, але ви все ще (мабуть, для більшості застосунків) досить швидкі. Реальність ситуації полягає в тому, що, коли ви дивитесь на оптимізовані рішення, де у вас є час реакції 200 мс, і коли шар абстракції обробляє це за вас, алгоритм приймає "лише" 10-кратний удар, у вас є 2 секунди затримки, і тоді ви піклуєтесь про багато, тому що йде не від того, що швидко, до болісно повільного. Побачивши, що рішення реляційних баз даних не дуже масштабні, Я не думаю, що це вирішиться через два-три роки. Це означає, що вам доведеться ще досить довго спускатися до чистого металу, коли мова заходить про більші бази даних, або ваш додаток буде настільки повільним, що він не може протистояти конкурентам.