Data-Oriented Design (DOD) is a modern software design paradigm that shifts the focus from objects and abstractions to how data is organized, accessed, and transformed within a system. Unlike traditional object-oriented design, which prioritizes encapsulation and inheritance, data-oriented design emphasizes data layout, memory efficiency, and performance — especially with respect to modern CPU architecture and cache utilization.
At its core, DOD is about understanding the actual data flow in a program and structuring code so that it operates on that data in a way that minimizes cache misses, branching, and memory fragmentation. This often involves organizing data in contiguous memory blocks, separating data by usage patterns (e.g., hot vs. cold data), and designing algorithms around the movement and transformation of these data structures.
Modern high-performance systems — such as game engines, real-time simulations, and data-intensive applications — leverage DOD to achieve predictable performance, scalability, and hardware efficiency.