为什么要使用数据库?直接保存成文件不行吗?数据库跟文件系统的区别太大了呀,实际上每次我给talk,上来第一个就是要比较数据库跟文件系统的区别。
1.sql,易用性,文件系统你要自己写awk 写sed,可能还要写code很麻烦的,数据库一个dsl搞定
2.事务他帮你做了
3.内存管理他帮你做了
4.性能,你自己搞一般来说搞不过数据库。
5. 计算。数据库允许你做很多计算,比如全班算一下身高超过170的有几个,比如全班平均分数多少。文件系统就没这些功能。你得自己写程序解决。
6. 效率。数据库允许你建index,按index来查询会比全文件扫描快很多。文件系统可没这好事。要做索引就得自己维护了。
7. 原子性。数据库可以保证事务原子性。文件系统只保证单操作原子性,而且并发访问有问题。
8.网络访问。数据库往往有网络访问接口,文件系统本身没有。
数据库存储的东西是 事实(Facts),你可以向数据库问询(使用Sql/Datalog),数据库引擎 给你返回答案/信息(Information)。而文件系统只存储非结构化的数据(Data),没有任何智能,无法回答任何问题。
换一种说法,区别就在于:你可以向数据库提问,数据库自动给你返回问题的答案,而文件系统不行,要从文件系统内找到有用的信息,你顶多使用遍历匹配来查找。