之前接触到的基于LAMP平台的网站,凡是稍微有一点量上去的,在数据结构的设计上总是离不开“拆库拆表”。同样,作为网站的数据结构设计,很少会出现类似ERP系统才会应用到的函数(function)、存储过程(procudce)、触发器(trigger)什么的——曾经看过有ERP系统的所有逻辑都是通过这3者保存在数据库端的。加上MySQL本身的一些因素,用之前一个朋友的话说:“Mysql在网站中的地位更多的是一个数据容器,而不是完整意义上的数据库。”
既然仅仅只是当作一个容器,从性能上考虑那为什么要用MySQL呢?
最近在研究一些NoSQL的东西,memcache类这类的纯Key-value;redis这类key-list;以及更加接近于关系型的MongoDB。这类的数据容器相较MySQL这类SQL数据库而言,更多的都是在性能上做大幅提升。从搜索能力上讲,MySQL的搜索能力又远不及Sphinx或者Solr这类单纯的索引服务器。如果说关系型数据库的优势在于一致性。那事物操作本身也不是MySQL所擅长的,“拆库拆表”的设计理念更是打破了一致性的优势。MySQL剩下的优势恐怕只剩下了“便于维护”这一条了吧。
mysql mongodb 写入对比
mysql mongodb 查询对比
mysql mongodb 资源对比
相比MySQL这些年做的改进,几乎都是在完善事物处理这类高级的SQL逻辑。之前人们选择MySQL的原因,其实很少是由于MySQL的事务处理,而是性能方面的优势。当MySQL不再将性能的提升作为首要任务时,加上近一段时间风声水起的SNS热潮,MySQL的王者地位已经逐渐被NoSQL数据库挑战——甚至出现了完全排除MySQL的SNS框架。
据说MySQL5.6中启用了对于Memcache的支持,看来连MySQL自己也顿悟了……
转载请注明:爱开源 » 从SQL到NoSQL