Oprócz gier i badań (głównie statystycznych), z którymi nie mam doświadczenia, wydaje się, że dostęp do baz danych i operacje są jednym z niewielu obszarów, w których błędne decyzje prowadzą do bardzo dużego spadku wydajności. Wierzę w mocniejsze abstrakty baz danych w kodzie i wierzę, że linq, który łączy operacje bazy danych z językiem programowania, daje ci wszystkie narzędzia tego języka (sprawdzanie typu, sprawdzanie składni, wszystkie rzeczy, które lubisz w Twój język programowania), a jednocześnie daje ci mnóstwo mocy do robienia tego, co chcesz, jest absolutnie niesamowity. Niestety nadal nie zawsze działa. Oznacza to, że jeśli warstwa abstrakcji źle popełni optymalizacje, być może będziesz czekał na wynik sekund zamiast mikrosekund lub minut zamiast sekund na wynik. Ponieważ są to bardzo zauważalne czasy, musisz je zoptymalizować, w przeciwnym razie aplikacja nie będzie „działać”: wydajność staje się największym problemem aplikacji. Oznacza to, że musisz zbliżyć się do metalu i zoptymalizować rękę.
Kiedy dojdziemy do tego, że manipulowanie dużymi zestawami danych zajmuje na przykład 3 ms przy wykonywaniu ręcznie i 100 ms, gdy pozwalasz, aby warstwa abstrakcji zrobiła to za ciebie, za wszelką cenę pozwól, aby warstwa abstrakcji poradziła sobie z tym za ciebie, ponieważ możesz być 30 razy wolniejszym, ale nadal (prawdopodobnie w przypadku większości aplikacji) jesteś wystarczająco szybki. Rzeczywistość jest jednak taka, że kiedy patrzysz na zoptymalizowane rozwiązania, w których masz czas reakcji 200 ms, a gdy warstwa abstrakcji sobie z tym poradzi, algorytm przyjmuje „tylko” 10-krotne trafienie wydajnościowe, masz 2 sekundy opóźnienia, a potem bardzo Ci zależy, od nie tak szybkiego, aż po boleśnie powolne. Widząc to rozwiązania relacyjnych baz danych nie skalują się dobrze, Nie sądzę, że zostanie to rozwiązane za dwa lub trzy lata. Oznacza to, że nadal będziesz musiał przejść do samego systemu od dłuższego czasu, jeśli chodzi o większe bazy danych, lub Twoja aplikacja będzie tak wolna, że nie będzie w stanie wytrzymać konkurencji.