
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习互联网编程开发技术,而今天我们就通过案例分析来了解一下,数据库架构开发有哪些基础知识。
主主备份
每个数据库服务器都可以充当主服务器,同时其他服务器也被视为主服务器。所有主服务器在某个时间点同步数据,从而确保它们都有正确的和新的数据。
所有节点读写所有数据
主主备份的优点:
如果一台主服务器出现故障,其他数据库服务器可以正常运行并填补漏洞。当失效的数据库服务器重新上线时,它将复制新的数据从而和其他服务器同步。
主服务器可以位于多个不同的物理位置,可以分布在整个网络中。
受限于主服务器处理数据更新的能力。
联合(Federation)
联合(或功能分区)按功能对数据库进行分割。例如,可以使用三个数据库:论坛、用户和产品,而不是单一的、整体的数据库,从而减少对每个数据库的读写流量,从而减少备份延迟。
Federation根据功能对数据库进行分割
更小的数据库会产生更多的数据,这些数据可以放入内存中,而这又会由于缓存局部性的改善而导致更多的缓存命中。由于不需要单独的中心化主服务器进行序列化写操作,我们可以并行地进行写操作,从而提高吞吐量。
分片(Sharding)
分片(也称为数据分区)是一种将大数据库分解为许多较小部分的技术,这样每个数据库只管理数据的一个子集。
理想情况下,我们让不同的用户与不同的数据库节点通信。它有助于提高系统的可管理性、性能、可用性和负载均衡。
每个用户只需要与一个服务器通信,因此可以从该服务器获得快速响应。
负载可以在服务器之间很好地平衡——例如,如果我们有5台服务器,每个服务器只需要处理20%的负载。
实践中有许多不同的技术可以将数据库分解为多个更小的部分。
水平分片(Horizontalpartitioning)
在这种技术中,我们将不同的行放入不同的表中。
把不同的行放到不同的表中
垂直分片(Verticalpartitioning)
在本例中,我们将数据划分为与特定特性相关的表存储在它们自己的服务器中。例如,如果我们正在构建一个类似Instagram的系统——我们需要存储与用户、他们上传的照片和他们关注的人相关的数据——我们可以决定将用户的个人资料放在一个数据库服务器上,朋友列表放在另一个服务器上,照片放在三个服务器上。
将数据划分为与特定特性相关的表存储在各自的服务器上
基于目录的分区
应用怎么知道数据储存在哪个数据库里呢?创建一个查找服务可以以一种松耦合的方式解决问题,该服务知道当前的分区模式,并保存每个实体的以及存储在哪个数据库分片上的映射。
请记住,分片技术存在以下一些常见问题:
在某些情况下,数据库joins操作变得更加昂贵,甚至是不可行的。
分片会损害数据库的引用完整性。
数据库schema的更改可能会非常昂贵。
数据分布可能不均匀,一个分片上可能有过多负载。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。