“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