database - Master + Slave 数据库架构 vs. Master + Memcache

标签 database architecture memcached scalability

假设我们有一台带有数据库的服务器和 N 台可用于使用 Memcache 缓存数据的服务器。数据库中的每条记录都可以在缓存中有多个(但远少于 N)表示。例如,ID 为 108 的实体可以通过键 entity_108_1、entity_108_2、...、entity_108_10 进行缓存。当数据库中的某些记录发生变化时,缓存中的相应记录将被替换为新数据。

为什么这种架构不如主/从数据库设置好?看起来它具有相同的优势,而且不会受到复制滞后的影响。

最佳答案

我认为最好使用内存缓存。不仅复制过程中的滞后会产生问题,而且您的 N 服务器不需要巨大的 HDD 空间(如果我们假设您拥有巨大的数据库)。另一方面,您不会实现冗余。如果您的主数据库服务器挂掉,您将没有人可以接替它的位置。因此,从属服务器对于这些目的是必需的,但很可能您不需要 N知道如何使用它)。根据我的经验,维护 memcached 实例总是比从属 MySQL 服务器更容易(并且可能与其他数据库引擎相同)。

当然,如果您开发的应用程序知道如何使用内存缓存,那么所有这些都是有意义的。在你的配置中再添加一个连接字符串,并将它用于某些数据库服务器的只读目的,就像你在 master 中使用它一样,总是更容易。使用来自其他数据源(如内存缓存)的数据假定您以这种方式构建应用程序。

关于database - Master + Slave 数据库架构 vs. Master + Memcache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8795475/

相关文章:

php - 我想要选择数据,但它不起作用

architecture - 真或假 : cross-domain SSO always requires a third party identity provider

html - 如何在 Angular 2 应用程序中处理不同的客户版本?

memcached - memcached 能否充分利用多核?

php - memcached 多个 mysql 结果

sql - 将数据从 Azure 数据库保存到 Windows 8 应用程序并从中读取数据

android - 连接到android手机时无法读取数据库

java - 如何在多个应用程序之间共享业务逻辑

mysql - 具有不断变化的行数据的 Memcached

php - 与 mySQL 相关的数据库名称