何时使用平面文件而不是RDBMS / NOSQL /等

时间:2014-01-03 15:16:43

标签: database caching nosql scalability flat-file

我所处理的问题领域是Web应用程序和Web API。

我成为开发人员的时间越长,我就越开始质疑对关系数据库的需求,尽管主流思想似乎是将所有内容都填充到数据库中。

什么时候简单地将平面文件用于Web应用程序和/或Web API?

例如,据我所知,数十年前的大规模IRC只是将聊天对话附加到一个开放的平面文件(没有数据库,没有缓存等)。

使用平面文件会让您失去功能,性能,数据一致性,持久性等等......特别是考虑到数据库简单地将信息存储在平面文件本身中吗?

2 个答案:

答案 0 :(得分:1)

你必须解决你的要求。例如:

  • 你想要交易吗?如果是,则平面文件不好(BTW RDBMS文件不是'简单'的平面文件!)
    • Key / Value数据库是否有效?如果是,那么可能是NoSQL数据库。
    • 韧性?
    • 复制?
    • 多种复杂数据类型? 也许 RDBMS。 弄清楚所有这些(可能更多)然后看看什么适合......

答案 1 :(得分:0)

如果只需要根据内容创建文件,则应该使用平面文件。 (例如,像博客)

您将创建一个构建要使用的html的系统,以在生成后将其用作静态资产。与使用RDBMS相比,处理代码的方式要快得多。

如果您需要高度动态的内容,则出于性能考虑,应选择RDBMS,但如果可以采用生成静态内容和仅某些API端点的方法,则可以节省数百万个RAM字节。到目前为止,MySQL / MariaDB和MongoDB都是内存消耗。

我确实真的试图使Mongo和MySQL在我的1GB RAM服务器上运行,并且它总是崩溃,同时,我的静态页面运行平稳,除了HTTP Connection的套接字外,没有使用ram。

如果您想为用户提供流畅的体验,大多数页面从不真正需要动态内容!一路都是静态内容。