存储系统使用感悟
每一个应用系统都会使用存储,把存储理解掌握清晰,并将合适的存储使用在合适的场景下不是一件容易的事。
1 当下事务做的最好的依然是关系数据库,如果业务是订单 支付等,还是用关系数据库,不要给自己找麻烦。
2 关系数据库是很强大的,但关系数据库不是银弹,不能解决所有存储问题。
3 文档数据库值得研究比如mongodb。
4 缓存是提升性能重要方式,无论是服务本地缓存,还是分布式缓存集群。
5 redis是很棒的分布式缓存,但是不能当黑盒用,需要了解每种数据结构的时间复杂度,空间复杂度,业务系统越复杂,并发量越大,越要多详细理解redis架构,不然会碰的灰头土脸。
6 能不用分布式存储系统,尽量就不要用,如果要用就要方方面面尽量了解清楚仔细,不然总会引入bug。
7 缓存所有数据不是一个好方法,尽量要用lru缓存。
8 redis存储数据不要有大key或者大value,redis单线程架构很容易被堵塞。
9 分布式事务是一件极其复杂的事情。
10 数据存储要提前进行规划,并且要管理清晰,不然很容易没用的数据留在存储中,浪费存储空间。
11 内存 ssd 机械磁盘是大规模数据降低成本方式。
12 hbase读的性能还是比较差。
13 es不是一种存储,跳跃表的时间复杂度很高,数据存储在里面,搜索出来2ms,除非数据特别少,几千条,否则怎么可能2ms,用一种存储要深入的掌握他。
14 合适的场景用合适的存储,图数据库可以深入研究,看是否适合推荐引擎。
15 存储没有银弹,关系数据库适合强事务场景,分布式缓存解决高并发,文档数据库在互联网业务场景下更灵活。
16 如果来源的存储都满足不了业务要求,就需要自己研发,储存研发需要大量的时间以及高水平研发人员,并且需要严格构建流程,严格的研发规范,编码规范,需要全面的测试用例,压力测试性能测试,以及自动化测试工具,如无必要不要自己研发。
对于存储一点感悟,希望对大家有点启发。