大数据量的存储,主要是清理和分箱。
应对大数据量,包括数据访问,方案一是清理,二是分类。
清理就是定期对数据进行清理和归档。
分类一是根据操作做读写分离。二是做水平划分(分片)。三是做垂直划分,比如微服务的库拆分,还有根据不同的场景选择合理的存储方式。
搜索服务使用ES,日志服务使用MongoDb,业务数据使用Mysql,缓存数据使用Redis和Guava。
微服务框架中数据库的选择
一是按照存储的数据对象划分。
业务数据存放到关系数据库,比如mysql,postsql。资金允许可以用oracle。存储引擎用InnoDB,提供具有提交、回滚和崩溃恢复能力的事务安全存储引擎。
缓存数据用redis。
大数据量的基础数据用MongoDB,比如文章评论。注意MongoDB中一个文档最大16M。
日志数据用ES。全文搜索的业务需求用ES,比如文章(按照标题、发布用户、发布时间、文章内容等)搜索。
二是按照需求来划分。
如果需要做全文搜索,用ES。
如果是范式搜索和增删改查,用关系数据库。
如果是文章评论,而且一个文档小于16M,用MongoDB。
去中心化的数据管理,每一个微服务都有自己的数据库。优点在于不同的服务可以选择适合自身业务的数据,比如订单服务用mysql,评论服务可以用MongoDB,商品搜索服务可以用ES。缺点是事务的问题。目前的解决方案是最终一致性。