插入Mysql时的压缩

插入Mysql时的压缩,mysql,jpa,Mysql,Jpa,我有一个将JSON有效负载存储在mysql列中的用例,因为我的规模很大,数据也像任何东西一样增长,因为我的有效负载非常大,主要是以KBs为单位 我正试图找到最好的方法,在插入时进行一些压缩。Mysql提供AES\u加密 我的问题是: 这会影响大规模的性能吗?还有别的办法吗 可能吗 我目前正在使用InnoDB引擎。您可以使用不同的加密和压缩方法。在这里可以买到 主要的压缩方法有: 1) AES_ENCRYPT() 3) DES_ENCRYPT() 4) ENCRYPT() 5) COMPRE

我有一个将JSON有效负载存储在mysql列中的用例,因为我的规模很大,数据也像任何东西一样增长,因为我的有效负载非常大,主要是以KBs为单位

我正试图找到最好的方法,在插入时进行一些压缩。Mysql提供AES\u加密

我的问题是:

这会影响大规模的性能吗?还有别的办法吗 可能吗


我目前正在使用InnoDB引擎。

您可以使用不同的加密和压缩方法。在这里可以买到

主要的压缩方法有:

1) AES_ENCRYPT()

3) DES_ENCRYPT()

4) ENCRYPT()

5) COMPRESS()
其中一些像DES_ENCRYPT、SHA1、MD5,要么安全性较低,要么像DES一样太旧

我没有看到太多关于文件压缩方式的信息,因此我建议您在AES\u ENCRYPT()ENCRYPT()COMPRESS()之间进行测试,并检查服务器的延迟和响应时间以找出答案

否则,据我所知,这些方法更多地用于为最终用户在服务器和应用程序之间建立更安全的通信。如果压缩这些信息可以让您在服务器上获得大量存储空间,我就不是舒尔

但与您所说的有效负载问题相比,这实际上取决于您想做什么以及您所处的结构(企业、小型企业、个人开发)……如果您正在开发小型企业或个人项目,mysqlinnoDB配合使用就可以了。。但对于大型项目,如企业等,我建议您转向OracleSQL server,它们能够管理大量数据(不是免费的),或PostgreSQL,它们是免费许可的


Cheers andy

加密不会减少数据大小,可能会增加少量数据,使用AES填充可以增加1到16个字节。加密还将增加加密/解密的时间,这取决于系统硬件,这可能是一个相当大的命中率或最小的命中率

有几种可能的解决方案:

  • 使用诸如zip、Compress或其中一个从属项的方法压缩数据,这取决于数据大小,这可能会产生较小或较大的大小缩减,使用正确的数据,压缩可以产生约90%的缩减。这将增加CPU开销,但在许多情况下总体速度更快,因为从磁盘读取的数据更少

  • 将大数据保存在文件中,并将文件名放入数据库。这是使用数据库处理大型数据的一种相当标准的方法


  • 问题到底是什么?如何压缩数据?加密它肯定不会有帮助。不要看JPA的相关性。您的数据库可以自行处理所有这些问题……为什么Oracle、SQL server或PostgreSQL能够管理更多的数据?这意味着他们使用了一些MySQL不知道的特殊算法,允许他们神奇地使用更多的硬件或其他什么。加密不会减少数据的大小。2.SHA1、MD5和所有哈希函数都是不可逆的,无法恢复原始数据。3.DES不应该用于新的工作,不再被认为是安全的,使用AES,这是当前的、安全的,并且在相对新的硬件上可能比DES更快。“这意味着他们使用一些MySQL不知道的特殊算法,允许他们神奇地使用更多的硬件还是什么?”。对不起,你没有抓住重点。这确实没有反映我的想法,但我已经与MySQL和MySQLI合作了很多,我必须说我错过了什么?显然,一些数据库供应商比MySQL“更好”,我只是问为什么。您使用过MySQL和MySQLi(MySQLi是PHP与MySQL对话的接口,而不是实际的数据库),这实际上意味着什么都没有。因为你显然知道其他供应商更好,我得到了这个PB的数据由MySQL处理-当然,我很感兴趣,因为我更喜欢使用更好的工具。那么,试一试——为什么它们更好?我认为这里根本没有问题。OP只需使用
    json
    字段并停止过早优化。甚至还有
    TokuDB
    存储引擎擅长压缩,
    json
    字段的存储效率很高。使用json会有什么帮助?关于过早优化,您确实提出了一个很好的观点,但这里可能不是这样,因为OP声明:“数据正在像任何东西一样增长”。这可能不是问题。使用
    json
    将:a)首先验证它的有效性
    json
    ;b)最大大小取决于
    max_-allowed_-packet
    系统变量(通常大于1MB);c)存储为json的数据经过优化(二进制格式,初始保存后需要额外解析)。OP通过压缩JSON数据实现任何目标的可能性是100%,因为MySQL压缩了它所能做到的。他将从中生成一个美化的文本文件,消除数据库提供的任何操作存储值的功能。因此,将其存储为
    json
    将产生直接的优势。有趣的是:“MySQL压缩它所能压缩的内容”,我很有兴趣看到这方面的文档,我已经很多年没有使用MySQL了。我会准确地说,不会深入研究InnoDB的细节(因为必须启用压缩)——(这是InnoDB的替代品)。即使没有它,如果您可以选择在存储级别压缩表,也没有理由对列中的数据执行手动压缩。这就是我试图说明的要点。