【问题标题】:Logging mssql tables transactions to redis将 mssql 表事务记录到 redis
【发布时间】:2014-07-14 07:46:04
【问题描述】:

我有 mssql 数据库和大量的表有更新、删除触发器。所有表都将更改插入到同一数据库内的一个日志表中。 此外,我们还有 sql 作业,它将日志移动到另一个仅包含日志表的数据库中。 我想用这样的 NoSQL 数据库加快这个操作:

MSSQL->
  MainDB->
    update/delete->
      triggers 
           collect before,update rows into xml 
           and insert as JSON into Redis db

我不知道这比这更快:

MSSQL->
  MainDB->
    update/delete->
      triggers 
          collect before,update rows into xml 
          and insert into log table in the same db

如果 NoSQL 会比它自己快,我应该如何从 MSSQL Trigger 调用 Redis api?

【问题讨论】:

    标签: sql-server logging triggers redis nosql


    【解决方案1】:

    这取决于您要将日志用于什么目的,但有几点建议:

    1. 听起来你会有很多日志。不使用 Redis 的许多其他原因之一是它是一个内存数据存储,并且您将浪费大量内存来存储日志,我猜您真的不需要快速访问。只是快速写入。您可以更便宜地获得快速写入。

    2. 有许多出色的分布式日志框架可以满足您的需求(KafkaFluentd 等...)。 FluentD 非常易于使用,可以让您将日志配置为以分布式方式运行,这种方式将快速且与数据库断开连接。它有许多连接器,可让您将日志流式传输到各种存储(MongoDB、MySQL、平面文件、S3 等)。您对数据存储的选择应取决于您最终想要对日志执行的操作。

    3. 是否必须从 MsSQL 触发器调用日志?这对您的数据库造成了不必要的影响,您可以轻松地从应用程序中调用日志。这将使整个内容分布在每个应用程序盒中,并减轻您的数据库的负载。

    【讨论】:

    • 阅读和评论 :) 1 你说的完全正确。
    • 2 我会检查 FluentD
    • 3编写代码来收集行的每个更新前的状态非常容易。这会很容易还是像注入一段代码并在之前收集所有内容并更新。好的,我会检查它。
    • 不确定你所说的三个是什么意思,但是如果你需要记录 当且仅当你运行一个数据库操作,你可以为运行数据库操作创建一个知道如何为他们登录。这与您在 MsSQL 触发器中使用的逻辑相同,只是它是应用程序端而不是数据库端。
    猜你喜欢
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 2021-01-20
    • 2017-07-18
    • 1970-01-01
    • 2019-07-07
    相关资源
    最近更新 更多