Device Database Platform
What is the paramount of Unix for you?
For me, it's modularity. It's amazing, I can't believe, that the design has survived for more than 30 years, especially in the last decade.
There is a reason that makes me astonished.
I am the one among Java generation. I thought C is something fixed, in changes both of requirements and hardware. I mean, C is not something you can deal with changes. But it is not absolutely true. You'll see when you look at all those wide variety of adoptions. Especially, in the appearence of Linux.
Linux, what a great adoption of Unix.
Legend has it that the kernel developers were constantly tweaking the C code they wrote in the Linux kernel in order to control the 80x86 machine code that the GCC compiler was producing.
says Randall Hyde in his book, "WRITE GREAT CODE VOLUME 2: THINKING LOW-LEVEL, WRITING HIGH-LEVEL".
In general, Java guys are indifferent to low-level issues since they think it is the due of JVM or have never thought about it. Of cource, I used to be one of those. Such guys can count on one of the best possible implementation by making use of Java library written by Java developers, but how could JVM translate a code written by them into efficient bytecode? And then to efficient assembly for a target machine?
True. In this Virtualization era, you may wonder, if such an effort makes any difference. I agree. How many layers, abstractions, your application might have to get through? Ten?
Beside, you might argue quoting the phrase, "premature optimization is the root of all evil". But then, I will ask. Have you ever succeeded in tuning performance at last without upgrading hardware?
I have felt some kind of, how can I say, like you're in a cage like a bird. If you feel like that, you may want to forget about all those abstractions, then think at hardware-level from scratch.
Then, what came to me is the idea, Device Database Platform.
It is a modular database. Imagine VFS in Linux kernel.
There are a couple of reasons why a device database has to be modular.
A software on a device has to be optimized as possible as one can do. The work force cost is considered chieper than hardware cost brought by an increase of unit cost for inefficient code. So you need to get rid of unnecesarry parts, and replace inefficient module with another designed best. This requirement keeps device guys stay on RYO database simply because a commercial database lacks the ability for customization, which means quite expensive on a device.
It is easy to imagine that you can design more efficient algorithm for a specific usage. Besides, there are many CPU architectures and OS involved. So, as Linux lernel guys does, there are many rooms improved for every combination.
Actually, device guys have done that. So they write their own database. But it is also true, they want a database.
When I consider these conditions, and learn from Unix and Linux, what occurs to me is to design and write a modular database.