I think you&#x27;re looking for a set of roughly-orthogonal concepts that together make up a &quot;database&quot;, right?  Basically, you&#x27;re trying to understand the different dimensions under which database products might make different trade-offs, defining the design space?  If so, take a look at these concepts:<p><i>Schema</i>.  This defines how the raw bytes of a data record are mapped into semantically-relevant pieces of data for your program.  The relational model (behind SQL) is the most commonly used schema for commercial database products, but also check out things like XML databases, JSON data-stores, serialization formats like Protobuf or Thrift, etc.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Data_model" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Data_model</a><p><i>Indexing</i>.  This defines what data structures are used to quickly <i>find</i> records on disk.  Almost all the major products use B-trees, but these are not the only options: you can also have hash indexes, sorted string tables, bitmaps, bloom filters, etc.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Database_index" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Database_index</a><p><i>Concurrency control</i>.  This defines how the database deals with multiple clients trying to modify the same piece of data at once.  Options include row-level locks, table-level locks, MVCC, STM, CRDTs, etc.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Concurrency_control" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Concurrency_control</a><p><i>The memory hierarchy</i>.  This defines where the data is stored, physically.  Is it on disk, like most data-warehousing stores or distributed filesystems?  Is it in memory, like memcached or Redis?  Is it on Flash memory?  Is there some sort of caching scheme where parts of the data are in memory and parts on disk?<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Memory_hierarchy" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Memory_hierarchy</a><p><i>Distribution</i>.  How is data split across multiple machines, and then how are failures in the network handled?<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;CAP_theorem" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;CAP_theorem</a><p>Hope this helps.  Most data-management solutions (even ones that often aren&#x27;t considered &quot;databases&quot;, like memcached or Redis or flat CSV files or MapReduce or the Google Search indexes) can be mapped onto this space.