![Nosql 计算的自动扩展](https://linux22.com/image/730120/Nosql%20%E8%AE%A1%E7%AE%97%E7%9A%84%E8%87%AA%E5%8A%A8%E6%89%A9%E5%B1%95.png)
大多数 nosql 自动扩展都面临问题,因为在峰值负载期间必须迁移数据。如果数据存储在开销较少的共享存储(如 CLVM)中(与 NFS 或共享文件系统相比),情况会怎样?现在,如果每个存储桶/分片都是一个单独的 LVM,并且计算可以根据其负责的分片数量安装一个或多个 LVM。在高负载下,计算将放弃一些分片(卸载 LVM),而新出现的计算将安装分片。这将 DB 的存储和计算问题解耦,并使计算水平可扩展。我知道 serverfault 不接受开放式讨论。建议在论坛上发布此内容也会对我有所帮助。如果有人能帮助我理解这个想法的陷阱,也欢迎
答案1
如果数据存储在 CLVM 等开销较小的共享存储中会怎样?这将解耦 DB 的存储和计算问题,并使计算可水平扩展。... 建议在论坛上发布此内容也会对我有所帮助。如果有人能帮助我理解这个想法的陷阱,也欢迎。
如果仅有的计算规模扩大,相比之下,除了延迟之外,其他一切都缩小了。您可能最终会用计算规模扩大换取磁盘 I/O 规模缩小(瓶颈),但您可能可以接受这种权衡,并且可以添加更多更快的磁盘来避免这种情况;额外的机箱提供了足够的空间。
请参阅:”DB-Engine 的网站“,”DataStax - NoSQL 数据库中数据复制说明“,”Linux Journal - 使用 HA-LVM 实现高可用性存储“ 和 ”维基百科的水平/垂直/数据库扩展”网页以获取更多信息。
有以下解决方案内存缓存(数据库)这比从 NoSQL 切换到其他软件更容易,但承诺更好扩展的软件是更好的解决方案。
在这次比较中Casandra 与 MongoDB结论是:“如果您追求的是写入可扩展性和 100% 可用性,那么 Cassandra 更适合您。”总会有一些权衡,您需要进行完整的成本/收益分析,考虑金钱和时间 - 最糟糕的情况是走一条路,最终走进死胡同,当遇到相同或不同的障碍时,被迫重新解决问题。
您需要决定所需的解决方案是否必须在短期或长期内保持低成本,以及哪些功能集(复杂性)适合您的需求并值得您花时间。上面链接的第一个网站提供了一种比较不同功能集和成本的方法,同时还提供了许多网站的链接。
让我建议另一种方法,分布式共享内存或反射记忆。
“分布式内存系统通常称为多计算机,由多个独立的处理节点和本地内存模块组成,这些节点通过通用互连网络连接。软件 DSM 系统可以在操作系统中实现,也可以作为编程库实现,可以看作是底层虚拟内存架构的扩展。在操作系统中实现时,此类系统对开发人员是透明的;这意味着底层分布式内存对用户完全隐藏。相比之下,在库或语言级别实现的软件 DSM 系统并不透明,开发人员通常必须以不同的方式对其进行编程。但是,这些系统为 DSM 系统实现提供了一种更具可移植性的方法。分布式共享内存系统在物理分布式内存系统上实现共享内存模型”。
除了共享内存的软件解决方案外,还有硬件解决方案。以下是一些供应商分布式计算接口板:
海豚-PXH812 主机/目标适配器- 通过铜线以 64 Gb/s 的速度将一台计算机的 PCIe 总线连接到另一台计算机,延迟为 138 纳秒,距离可达 5 米(光纤为 200 米)。这是透明的版本(无需软件,任何操作系统,可以混合 CPU Arches),还有 PXH810 NTB 主机适配器(不可转移桥接),带有共享内存集群互连 (SISCI) API,但操作系统是有限的至:Windows、Linux、VxWorks 或 RTX。请参阅其“PCI Express 反射内存“ 网页。
柯蒂斯·莱特 -SCRAM网络GT200- 双端口内存作为附加主机内存出现在主机总线上。主机通过一个端口读取和写入数据,而网络通过第二个端口将数据写入内存。主机写入内存的数据由硬件自动传输到网络上的所有节点。
阿巴科岛 -PCIE-5565RC 接口卡- 在 Linux、VxWorks 或 Windows 上共享 128 或 256 MB SDRAM。接口卡可用于 PCI Express、PMC、PCI 和 VME。
除了板对板之外,您还可以为上述大多数产品添加集线器,并添加数到 256 个节点。也许值得等到明年和 PCIe 4.0。
答案2
例如,MongoDB 有以下概念:副本集针对这种情况。在这种情况下,多个 MongoDB 实例提供相同的数据。如果一个实例发生故障,其他实例将继续提供数据。对于副本集,共享存储不是必需的,也不是理想的;每个 MongoDB 实例都保留一份单独的数据副本。
这与分片完全正交,在分片中,数据被分割到不同的 MongoDB 实例或副本集之间。