“using NoSQL” under MySQL

https://dev.mysql.com/doc/refman/5.7/en/document-store.html

https://dev.mysql.com/doc/refman/5.7/en/document-store-setting-up.html

在没有MongoDB之前,我们要存储各种类型的文档进入Oracle、MySQL、SQLServer怎么办呢?

几种方案:

  • 把文档存入blob(二进制)类型的字段中。
    • 优点:文件和这行记录在一起,总能保质一致性。
    • 缺点:随着数据量的增加,读取文档的频繁,数据库性能会很慢;文件大小,还得计算存储下来,白费一些计算资源。
  • 把文档路径存入varchar(255)类型的字段中,实际文件存储在文件系统中。(阿里云的OSS产品解决了存储与备份的问题)
    • windows下文件名最大:255;最大路径长度:260字节,https://blog.csdn.net/wzsy/article/details/49584579
    • linux下文件名最大:255;最大路径长度:4096字节,https://blog.csdn.net/wwlhz/article/details/73838471
    • 优点:数据库存储占用小了,内存占用也小了。
    • 缺点:信息容易不一致,必须保证删除文件的同时,文件信息的记录也必须删除(使用事务控制就会降低效率,MySQL与ActiveMQ保证事务一致性可以用JTA?)。要搭建个测试环境,还得配置独立的文件存储路径,不够自动化。文件损坏,被病毒感染怎么办?

用MongoDB,当然好了,但是呢,增加了技术的学习成本和运维成本。一个不大的项目,引入这样一个组件,真是无奈之选。

现在好了,MySQL意识到这个问题了,可以通过参数配置,让其本身很好的支持NO SQL功能,两全其美。

法律声明,当前此特性,只是预生产状态,引起的问题,Oracle概不负责!!!

https://dev.mysql.com/doc/refman/5.7/en/document-store-legalnotice.html

 

posted @ 2018-04-02 16:53  任国强  阅读(283)  评论(0编辑  收藏  举报