And*_*rey 90
Est*_*ber 40
它完全取决于特定于域的应用程序需求.很多时候,直接文本文件/二进制文件访问可以非常快速,高效,并且为您提供操作系统文件系统的所有文件访问功能.
此外,您的编程语言很可能已经有一个内置模块(或很容易制作)用于特定的解析.
如果您需要的是许多附加(INSERTS?)和顺序/少数访问很少/没有并发,文件是要走的路.
另一方面,当您对并发,非顺序读/写,原子性,原子权限,数据的性质等要求时,您最好使用关系数据库或OO数据库.
使用SQLite3可以实现很多功能,它非常轻便(300kb以下),符合ACID标准,用C/C++编写,并且非常普遍(如果它还没有包含在您的编程语言中 - 例如Python-,肯定有一个可用).即使对于140 TB或128 tebibytes(链接到数据库大小)的db文件,它也可能更有用.
如果你的要求更大,甚至没有讨论,那就去找一个完整的RDBMS.
正如你在评论中所说的那样,"系统"只是一堆脚本,那么你应该看看pgbash.
如果你能买它,不要建造它.
我最近听到了这句话,它似乎很适合作为指导.问自己这个...花了多少时间处理你的应用程序的文件处理部分?我怀疑在优化此代码以获得性能方面花费了相当多的时间.如果您一直在使用关系数据库,那么处理这部分应用程序的时间会少得多.您可以有更多时间来应用您应用的真正"业务"方面.
他们更快; 除非您将整个平面文件加载到内存中,否则数据库几乎在所有情况下都允许更快的访问.
他们更安全; 数据库更容易安全备份; 他们有检查文件损坏的机制,而平面文件则没有.一旦平面文件中的损坏迁移到备份,您就完成了,您甚至可能还不知道.
他们有更多的功能; 数据库可以允许许多用户同时读/写.
一旦设置完成,它们就不那么复杂了.