【问题标题】:How to load all the data from a SQL database to Hazelcast cloud?如何将 SQL 数据库中的所有数据加载到 Hazelcast 云?
【发布时间】:2021-09-23 05:38:10
【问题描述】:

我正在使用 Hazelcast 云作为我的 .net 应用程序的缓存层,并且我想最初将数据库中的所有数据加载到缓存中。现在,我通过一次向缓存添加一行来完成此操作,如下所示。

 public async Task<bool> InitCache()
    {
        IEnumerable<UserV2> users = _context.UserV2s.ToList();
        var absExpTime = TimeSpan.FromHours(24);
        foreach (UserV2 user in users)
        {
            await SetRecordAsync<UserV2>(user.UserName, user, absExpTime);
        }
        return true;
    }

有没有一种机制可以让缓存层直接监听数据库并从那里获取数据?

【问题讨论】:

    标签: asp.net caching hazelcast


    【解决方案1】:

    Hazelcast 中有两种推荐的数据填充工具:MapLoader 和 Pipelines。两者都是将数据加载到 Hazelcast 集群的服务器端服务。两者都需要一些 Java 编码。

    MapLoader 在所有最新的 Hazelcast 版本中都可用。它需要更多代码,因为它是较低级别的 API。您必须编写完整的代码来加载数据,服务器在适用时执行它。

    管道是更高级别的、可组合的 API,带有用于许多数据库的 OOTB 连接器。对于一些数据库,还有一个CDC connector,它监听数据库更改并用它更新缓存。管道提供更高程度的容错、管理和性能。但是,它仅在 Hazelcast 5.0 及更高版本中可用。对于较旧的 Hazelcast,您必须使用另一个带有 Hazelcast Jet 引擎的集群来加载数据并终止。

    在此处查看比较:https://docs.hazelcast.com/hazelcast/5.0-beta-1/ingest/overview.html

    对于纯粹的 .NET 解决方案,您必须使用 .NET 客户端和自定义数据加载器自行管理数据加载。

    【讨论】:

    • 感谢您的回答,MapLoader 似乎仅适用于企业集群,所以现在我已经编写代码来检查缓存中是否存在记录,如果不存在则转到数据库获取相同的。现在,我正在使用 SetAllAsync 方法在一次调用中设置所有记录,但我想知道是否有类似于 Redis 中可用的批处理和管道功能的东西。我是初学者,这只是我第一次使用 Redis、Hazelcast :)
    • > MapLoader 似乎仅适用于 Enterprise 只是为了清楚起见:MapLoader 和 Pipelines 在 Hazelcast 中是开源的。
    猜你喜欢
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多