What would it take to write my own database system?
I would want to make it a server type system.
Have any successful database systems been written by one person?
What would it take to write my own database system?
I would want to make it a server type system.
Have any successful database systems been written by one person?
Short answer, a lot.
Longer answer; there's a whole bunch of stuff to consider, and it requires more detail than can be gone into in one question. You'd need to deal with data storage, indexing, SQL parsing, the database catalogue, transaction management and a whole host of other stuff, including all the client handling and authentication. There's also all the stuff I've forgotten, which I expect someone else will point out.
If you really want to write a database system, you're going to want to read up many resources, starting with a good book that explains everything in detail.
If you're not specifically looking to create a relational database, you might want to check out the source code for CouchDB. It is written in Erlang and provides a schema-less approach to database storage, retrieval and replication. These are just some of the major features and considerations to take into account when deciding if you want to create your own database.
best thing would be to look at the code for other DBs, specifically Open Source DBs, and try to figure out whats going on.
From that you can work out what each part does, and then focus on the parts you're interested in, and how they've been written.
MySQL and PostgreSQL are both Open Source. Check it out.
UPDATE:
haha, yes, point taken, just looking at the code might be a bit overwhelming. But there's definitely some value in it for sure I think. Plus the person who asked the question might not have been aware of Open Source DBs. This answer might even point them to look for smaller DBs which make their source available.
Yes you can, if it's simple enough. For example flat-file data storage with a REST interface would certainly fit in a one-person scope.
A full-blown RDBMS that would compete with what's available for free? No.
Depends on what you want to write, so I'd like to see the question fleshed out a bit. For example:
Do you want to handle just you and maybe some client software that you control, or do you want a full general-purpose database engine that would be used by lots of people around the world?
Must it be relational?
When you say "server type system", do you mean the system would store data in flat files living on a server, or do you mean a client/server architecture?
What are the requirements for uptime? 24x7? Or is it ok to take the system down for a few minutes per year?
I sense that you have in mind something simple, but I'm not sure what's considered thorough engineering vs over-engineering.
If you're serious about this, Database Systems: The Complete Book (Hector Garcia-Molina, Jeff Ullman, and Jennifer Widom) will tell you more than you need to know. Writing all those components is a pretty big commitment even if you're aiming for a small system.