If Loading up a SQL schema and reading some Docs is 'database Design' - What is designing a database called?

I'm not sure what exactly is meant by 'same algorithms'.

A routing table 'resolver' could operate by a number of principles, and although any enumerable sequence of actions is an 'algorithm', we generally reserve the term for non-obvious insights. You could imagine a naive implementation simply dedicating 232 bytes (subtracting reserved and bound IP address ranges) with their nearest route. Of course you're probably aware that routing is a hierarchical process and therefore even layer and BGP routes don't store information about every IP address, just a bitmask of the network a particular router is responsible for. In consideration of this we probably expect that most use the very-traditional constant-time approach of hash-tables w/ linear probing, although there are many other considerations a serious network programmer has to take into account, such as the existence of spanning-trees or perhaps even weights in internal-routing algorithms. In general these algorithms operate using the set of well-known graph algorithms.

By my estimation, none of these (except perhaps hashing) have any discernible relationship to B+ trees, consistent hashing (which, despite it's name, has only tangential bearing on hash tables) or any of the other 'algorithms' that a database might consist of (outside of the most general, philosophical concepts of computers).

Just as a final point, I think it's a common misconception for non-programmers to think that programs are just-a-bunch-of-algorithms (whatever that designation implies). This isn't really the case, there are so many considerations that are almost impossible to list, but I'll keep it short with the comment that the intrinsic beauty in particular organizations of instructions that cannot be readily explained to someone who hasn't programmed for quite a few years.

You don't have to take my word for it. The "Most Important & Challenging Programming Projects" thread lists 'Databases' alongside projects such as 'Compiler', 'Software Concurrency System', as well as more established 'proving grounds' such as 'Operating System' and 'Ray Tracing 3D renderer'.

The point being that the design of databases is not only considered 'challenging', but is so much so that any reasonable estimation of the challenge and time involved in the process would calculate that more man-hours and human ingenuity have invested in their proper execution than the even Apollo space shuttle. Any programmer who has designed and built one instantly receives major respect (and there are no widely used relational databases that have been built by one person alone).

Also, I'm glad you mentioned ZFS because it's a great segway! One of the most famous Sun-alums, Bryan Cantrill (On the dtrace, zfs as well as Solaris proper team before Sun's acquisition), actually devotes 2 minutes of a discussion about the development of Sun technologies to 'what do we call filesystem engineers'

/r/Database Thread Parent