If it was always worse then every developer doing this must be stupid. Here are some ways in which a filesystem is "better":
- Zero administration
- Only configuration setting is the directory
- Trivial to test
- Trivial to examine with existing tools, backup, modify etc
- Works with any operating system, language, platform, libraries etc
- Good performance characteristics and well tuned by the operating system
- Easy for any developer to understand
- No dependencies
- Security model is trivial to understand and is a base part of operating system
- Data is not externally accessible
Many existing databases have attributes that aren't desirable. For example they tend to care about data integrity and durability, at the expense of other things (eg increased administration, performance). For a use case like HN, losing 1 out of every 1,000 comments wouldn't be that big a deal - it isn't a bank.
Consider the development, deployment and administrative differences between doing "hello world" with a filesystem versus an existing database. Of course this doesn't always mean filesystems should be used. Developers should be practical and prudent.
TLDR: YAGNI, KISS, DTSTTCPW
- Has average latency over 500ms when not under load - Performs quite poorly under load (I hate to bring it up, but the most recent example was Aaron Swartz's passing. Anyone who used HN then to get news knows how poorly HN performs under load) - Is restarted every week or two because it leaks memory - Keeps XSRF tokens in memory and loses them across restarts - Doesn't have a full markup language
HN is quite poorly-featured compared to typical commenting sites. People use HN because pg is here. He could remove half the features on the site (bold & italics... what features are there even to remove beside nested commenting?) and retain 90% of the audience.
Nothing personal against pg - but I'm here more because of everyone else - the caliber of the discussion, for a news/tech site is quite high, IMHO - and that's due to everyone, not just pg.
With regards to the commenting site itself, I can think of no more viscerally enjoyable a forum I've ever participated in, with the possible exception of *Forum on MTS. There is nothing whatsoever that I would change about it, with the one possible exception of tweaking the markup so you could add fixed-width text/lists that wrapped over multiple lines. It's the only additional feature I've ever wanted out of HN. There is beauty in it's simplicity. [Edit: Okay, I would also move the upvote/downvote arrows a bit for mobile usage. It's almost impossible to hit the right one without a lot of zooming]
And, with rare exception of a MSM hit, the performance is more than adequate for an environ that should be encouraging reading, digesting, and composing.
How many ads do you see on HN? What's the ad revenue? What are the operating costs?
1. We don't matter to pg because we don't generate profit and are instead a slow drain on resources
2. Therefore this site must be a relic of the 90s written in an ad-hoc collection of mzscheme macros
Using a files system as a database is a little different as file systems are databases in their own right.
The question to ask is "is the data I want to store in my 'database' enough like the data stored in a filesystem that I can just use the filesystem as my database?"
- Zero administration
- Only configuration setting is the directory
- Trivial to test
- Trivial to examine with existing tools, backup, modify etc
- Works with any operating system, language, platform, libraries etc
- Good performance characteristics and well tuned by the operating system
- Easy for any developer to understand
- No dependencies
- Security model is trivial to understand and is a base part of operating system
- Data is not externally accessible
Many existing databases have attributes that aren't desirable. For example they tend to care about data integrity and durability, at the expense of other things (eg increased administration, performance). For a use case like HN, losing 1 out of every 1,000 comments wouldn't be that big a deal - it isn't a bank.
Consider the development, deployment and administrative differences between doing "hello world" with a filesystem versus an existing database. Of course this doesn't always mean filesystems should be used. Developers should be practical and prudent.
TLDR: YAGNI, KISS, DTSTTCPW
Thank you, drive through.
I doubt it would be improved by using something more "proper".
I'd love to see my median karma on my profile. Much more robust to outliers than average.
https://github.com/nex3/arc/blob/master/lib/news.arc#L2613