Jump to ratings and reviews
Rate this book

Data-oriented design: software engineering for limited resources and short schedules

Rate this book
The projects tackled by the software development industry have grown in scale and complexity. Costs are increasing along with the number of developers. Power bills for distributed projects have reached the point where optimisations pay literal dividends. Over the last 10 years, a software development movement has gained traction, a movement founded in games development. The limited resources and complexity of the software and hardware needed to ship modern game titles demanded a different approach.Data-oriented design is inspired by high-performance computing techniques, database design, and functional programming values. It provides a practical methodology that reduces complexity while improving performance of both your development team and your product. Understand the goal, understand the data, understand the hardware, develop the solution.This book presents foundations and principles helping to build a deeper understanding of data-oriented design. It provides instruction on the thought processes involved when considering data as the primary detail of any project.

307 pages, Paperback

Published September 29, 2018

24 people are currently reading
358 people want to read

About the author

Richard Fabian

4 books7 followers

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
23 (20%)
4 stars
41 (36%)
3 stars
30 (27%)
2 stars
15 (13%)
1 star
2 (1%)
Displaying 1 - 22 of 22 reviews
Profile Image for Iman Jahandideh.
13 reviews9 followers
May 23, 2019
As an OO game programmer I was interested about the Data Oriented approach. But the first question that I needed to be answered was "Why?" and in my opinion the book failed to answer this question. I agree DO is more performant than OO but for other claims the author either didn't tried to give any explanations or his explanations and examples was very weak.

A great part of the book was also devoted to "How". The main thing that peaked my interest was using databases for game. But maybe since I didn't understand the "Why?" part, most of the approaches seem too short and too vague to give any new insights to the DOD.
165 reviews
September 9, 2020
There are a lot of good ideas in here, but they are not terribly well explained, especially to those outside of the game industry. This topic is clearly relevant to a wider audience, but he is so focused on game developers that he fails to make the material very accessible to anyone else. More details and better examples would go a long way. Perhaps if the author spent less time attacking OO he would have had more energy to spend on the topic at hand.
Profile Image for Stijn.
71 reviews
November 5, 2019
Not that this is a bad book, but if you’re not a game developer writing c++ counting your cache hits, this book isn’t for you.
Profile Image for Adelbert.
62 reviews3 followers
January 24, 2020
Very well written and codifies data-oriented design practices into an organized book. If you enjoyed Mike Acton's CppCon'14 (https://youtu.be/rX0ItVEVjHc) you will enjoy this book. Even if you are not a game or graphics dev, it is worth reading if only to get a glimpse into an infrequently discussed perspective on software engineering - hardware-aware programming - applicable no matter where in the proverbial stack you are. To paraphrase Professor Alan Perlis, "a [philosophy] that doesn't affect the way you think about programming, is not worth knowing," and this book has definitely changed the way I think about programming.
Profile Image for Ruben.
1 review1 follower
July 18, 2019
Honestly the best and most necessary programming book I've read in recent memory. I'd recommend it to any kind of programmer, but if you're into systems programming, embedded or game development I'd qualify it as a must-read.

Does a great job at making you take a step back from practices that have established themselves in programming over the past few decades that we still blindly follow to our detriment. Justifies its claims with very well written arguments and shows a different path that we should take when we sit down to solve our problems with code.
Profile Image for Güçhan.
69 reviews1 follower
January 17, 2025
I picked up this book mainly because I was working with ECS (Entity Component System) at work. While it briefly touches on ECS, it goes far beyond that, diving into data at a much more fundamental and lower level, which I found useful.
Like most computer science textbooks, this one requires active studying—you can’t just read it like a novel. It’s also a highly relevant read in today’s era of concurrency, GPU utilization, AI, and crypto, I think.
The book includes many references to hardware, which inspired me to explore and learn more about that topic as well.
2 reviews
December 28, 2019
Understanding Unity’s move to DOTS & ECS

I came across this book whilst browsing for some insight into Unity’s switch to DOTS (the Data Oriented Technology Stack) which includes ECS (the Entity Component System). I certainly have a far better idea as to what motivated them to make the switch, & now confident that this is the direction I should take too
18 reviews
April 4, 2023
The book is rightfully good, but it's about 3 times longer than it needs to be because it regurgitates its ideas over and over again far too often. The main idea the book is trying to sale is to restructure your video games around what is called these days an Entity Component System design from an Object Oriented design. The motivation to move over are:
1. OO design makes it difficult to tackle composition of in-game structures as the project grows.
2. OO design is not cache-line friendly. Structures of vector is the suggested solution.
3. OO design imposes additional control flow complexity in your code, through virtual function dispatches and operations over not-normalized data structures (i.e. nullable)
I think there are definitely better sources out there to learn about ECS in practice; even the source code of an ECS system is probably far more enlightening. For the motivation, one should look up how memory works. The book doesn't go sufficiently deep into either topic so I can't sincerely recommend it. It seems fit for people who already have an OO game engine running and needs some convincing to take the leap of faith over to ECS.
20 reviews3 followers
November 21, 2020
The book gives a good idea about what's data-oriented design is about.

Still, falls short on giving good examples. As an example, there is an example regarding "false sharing", which is when you have two threads and they invalidate the cache of the other writing in close-enough memory addresses. I found the example extremely convoluted and hard to follow, compared with other examples in a stack overflow. Using plain C makes more sense than using C++ for examples.

Still is the only book you have to explore this design philosophy, and is fairly good.
Profile Image for Ivane.
11 reviews4 followers
June 27, 2020
Passion motivated and well written book about software design paradigm that was was born [or reincarnated] within field it serves [ever-changing game design and development]. Paradigm which [performance benefits aside] embraces change--be it design or implementation structure--and assumes knowing of [at least] something about actual problem of data transformation on an actual physical hardware.
Profile Image for molty cheese.
5 reviews6 followers
July 21, 2020
Confusing

The author likes to ramble on presented topics and sometimes segues into completely unrelated themes and not finishes his previous thoughts. Because of this the book reads more like a thought dump rather than a structured source of knowledge.
While there are nice ideas in this book, I don't think it is worth deciphering them from the incoherent wall of text.
Profile Image for Roman Kashitsyn.
17 reviews2 followers
February 21, 2021
I really wanted to like this book. It has some very good ideas, like the connection between normalisation in relational databases and ECS. However, the language is rather vague and hard to follow. The book could be twice as short without losing anything of importance.
I share the hope of the author that more books on the topic will follow.
16 reviews
February 10, 2019
This is a paradigm shift book. If you program you should read it, full stop.

Everything this book says makes sense. The only reason I don't 5/5 it is that I haven't /tried/ it enough yet, and I feel there's some argument missing somewhere.
Profile Image for Julian Schrittwieser.
66 reviews98 followers
July 28, 2020
Interesting view on data oriented design, but sometimes more subjective opinion than objective coverage of available methods. Also somewhat restricted to games, other domains quite different requirements.
8 reviews
January 25, 2021
This book contains unusual density of information (high), and surprised me with an unapologetic style of getting to the core of things, not trying to getting you up to speed with long introductions or trying to appeal to a larger public. I wish technical books were all like this.
Profile Image for Ryan Riley.
36 reviews3 followers
May 8, 2019
Highly recommended for anyone working with data.
Profile Image for Andrew.
167 reviews6 followers
Read
July 17, 2021
I enjoyed this work about high performance computing.
52 reviews1 follower
June 30, 2025
Was under the impression this book and Mikes video was were to start. Still so lost. Book is really for game devs.
4 reviews1 follower
May 26, 2022
At the time of writing this is one of the few books on the topic, and it's an interesting one at that. We're introduced to the idea of viewing the programs we're writing foremost as a sequence of data transformations, i.e. a sequence of functions that take data and produces new data, and as such can design our systems not by modelling the domain in code but in looking at what data we need as input to produce the desired output, with as little transformations needed in-between.

I think the book does an excellent job at introducing this way of viewing software design, and the technique of using relational databases to build up a data oriented correspondence to object relations is great.

My complaints are that there could be some more formalisms that more clearly outlines what data oriented design is actually supposed to be, rather than through examples, and to reduce the unneeded jabs at object oriented programming, and the overly focus on game programming.

All in all, it's a worthwhile read, albeit feeling sometimes more like a handbook than an introduction to a paradigm. Pick it up!
Profile Image for Mikhail Filatov.
369 reviews17 followers
August 12, 2019
This book has very little to do with design and nothing with "limited resources and short schedules". It's a set of incoherent rumblings against OOP. The only (probably) relevant one is about performance overhead of using virtual functions.
The author reveals to us in the second chapter a hidden gem -relational databases :)
Really, he describes them with enthusiasm of Larry Ellison selling Oracle "2.0". Maybe SQL DBs are not used in game development, but otherwise they (and OO languages) are pretty much mainstream for the last 25+ years.
There are some chapters about perf. optimizations in game development, but as I'm not a game developer it's difficult for me to evaluate - and nothing in the title and subtitle of this book hints that it's for game developers only.
Displaying 1 - 22 of 22 reviews

Can't find what you're looking for?

Get help and learn more about the design.