在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种:垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU、更大的内存、更大容量的磁盘,此种方法虽然成本很高,但是实现比较简单,维护起来也比较方便。水平扩展:通过使用更多配置一般的服务器来共同承担工作负载,此种方法很灵活,可以根据工作负载的大小动态增减服务器的数量,但是实现比较复杂,得有专门的人员来运维。
分片是一种在多台机器上存储数据记录的操作,它是 MongoDB 为应对数据增长需求而采取的办法。当数据量增长时,单台机器有可能无法存储数据或可接受的读取写入吞吐量。通过横向扩展,分片技术解决了这个问题。利用分片技术,我们可以添加更多的机器来应对数据量增加以及读写操作的要求。
据我们了解,当用户遇到性能问题时,原因通常都可回溯至数据的索引方式以及集群中的分片数量。对于涉及多租户和/或用到时序型索引的用例,这一点尤为突出。与用户讨论这一问题时,无论是在活动或聚会中面对面讨论,还是在论坛上讨论,我们遇到的一些最常见问题就是“我应该设置多少个分片?”以及“我应该设置多大的分片?”。
MongoDB基于wiredTiger提供的泛化SI的功能,重构了readHistory(readMajority)的能力,基于wiredTiger提供的AllCommittedTimestamp API,重构了前缀一致的主从复制(Prefix-Consistent-Replication)。
分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包含所有键的子集。本文第一部分将向你介绍分片的概念,第二部分将向你展示 Redis 分片的可选方案。 分片为何有用(Why useful)Redis 的分片承担着两个主要目标: 允许使用很多电脑的内存总和来支持更大的数据库。没有分片,你就被局限于单机能支持的内存容量。
关注时代Java