聊聊数据存储查询
这里我没有说出是数据库的操作,但是一般来说,我们都是采用数据库。对于数据库存储,我想先说说几类优化。
(1)SQL语句优化
说SQL语句优化,这个内容比较大,我记得还有专门说SQL优化的文档,网上可以自己搜索,因为每一种数据库有自己特性,优化语句不一样。通用的就是创建索引,查询时尽量有索引。少用in.
(2) 业务上的优化
所谓业务的优化,其实就是根据自己的业务和查询需要(插入需要),将数据库表进行合并或者字段简化,一遍减少连接上的查询筛选。已达到速度提升。当然有时候对于DBA来说,存储是冗余的,但是考虑整个系统,能够提升体验,冗余还是需要的,这就是存储上的用空间换时间
(3)分离数据库
这里的分离有我们一般的读写分离,还有专门的业务分离。读写分离不说了。从业务的角度,我们可以将数据按照一定信息和需要,采用多种方式,多种数据库进行存储。例如:1,采用缓存(内存数据库)存储一些数据。2.采用本地数据库(嵌入式数据库,本地文档数据库)或设计的文件格式存储,另外适合的nosql数据库,综合应用,解决查询问题。将一些数据放入这类存储中。
(4)构建系统式的查询服务器
这类解决的问题:
1.解决按照客户端问题(Oracle)
2.解决查询,插入瓶颈,充分利用服务器优势。
3.解决部署复杂度,客户端只需要提交SQL语句。
4.简化(3)中的多类数据库综合问题,同时可以利用数据库特性。现在很多数据库专门优化了文件导入,利用服务器之间导入文件,提升客户端批量插入。
5.可以扩展集群,提升性能。
大概就这么几类,说的很简单,只是为大家提供一个解决思路。
对于系统构建,我打算写一个demo,用sqlite数据库作为内存数据库,本地数据库,用berkeleydb做K-V数据库。redis数据库作为远端内存数据库。用postgresql作为大型数据库和文件导入方案。写完之后会提交,提供一个思路。传输只实现tcp,udp.