问题标签 [data-integrity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
201 浏览

c - 用于数据完整性检查的可并行哈希函数

我需要在以下情况下检查数据完整性:数据以不同大小的块写入存储(对于每个块,我们知道它在最终文件中的偏移量)。但是,这些块以任意顺序和多个线程出现。它们以完全不同的顺序从存储中读回(并且块具有不同的大小)。

我目前想到的是以下几点:

这似乎可以防止更改任何单个字节,并且(在某种程度上)防止交换​​块(交换块之间的距离不太可能被大素数整除)。这个函数对不同块的结果可以只是异或在一起,所以它是完全可并行的。

但是,与 md5 sum 或任何其他现代散列函数相比,此函数看起来非常简单。但据我了解,md5 sum 或 sha-1 sum 的计算不能以任意顺序完成。

好吧,问题是,我们有没有更好的解决方案

  1. 如果我们知道块的大小和偏移量(就像我上面概述的简单算法),可以按任意顺序计算。
  2. 可以提供至少与 md5 sum 相当的数据完整性检查。
0 投票
2 回答
267 浏览

java - 在 JDBC 中一次运行 4 个 mysql 查询

我编写了一个 Java 应用程序来将文章添加到 Joomla 站点。
我正在使用 JDBC 在 Mysql 数据库上连接和运行查询。
要创建一篇文章,我需要对_contents表运行一个查询(一个插入)和对表运行 3 个查询_assets(两个更新和一个插入)。
应该在_assets表上执行的三个查询用于将项目插入“嵌套列表树”;因此,如果其中一个查询失败,嵌套列表树将中断。
我的程序正在从远程系统访问数据库(因此 Internet 连接问题或其他任何事情都会中断查询)。
我怎样才能确保所有三个查询都相互运行而不会遗漏任何一个?

谢谢

0 投票
1 回答
1592 浏览

mysql - 如果我使用 Django South 运行迁移并且它崩溃了,我的数据库是否曾经损坏?

我正在玩 Django South,并且对它的功能印象深刻,但是在进行一些迁移的过程中,我设法做一些在迁移过程中导致错误的事情。诸如在数据迁移文件中出现语法错误或运行时异常、决定我不想实际做某事以及在迁移期间按 ctrl-c 并过早中止等事情。

我使用 MySQL 作为数据库后端。当 South 出现问题时,我是否需要担心数据库的完整性?事务是否确保所有问题都因错误而回滚?

0 投票
2 回答
358 浏览

relational-database - 在可以删除外键关系的情况下如何维护数据完整性

假设我有一张 PlantGroups 表。它们依赖于表 Plants 并具有外键 PlantId。每个 PlantGroup 仅包含一个 Plant。

如果Plants表中的记录被删除,或者被请求删除,应该采取什么流程来保证PlantsGroups的数据完整性?

此外,如果相应 PlantGroups 记录中的其他数据(依赖于请求删除的 Plants 记录)仍然相关且值得保留怎么办?

0 投票
2 回答
123 浏览

relational-database - 从对象图中删除对象,同时保持完整性

在关系数据库中,处理从对象图中删除对象同时仍保持引用完整性的最佳方法是什么?在某些时候,这必须发生。通过软删除或硬删除。

例如 - 当产品被移除时,确保包含该产品的订单仍然相关,或者确保包含该产品的订单的发票仍然相关的最佳方法是什么?

0 投票
1 回答
1329 浏览

django - 在 Django 中集成 celery beat?

我刚刚开始了一个项目,试图启动一个非常简单的 Django Celery 项目。因为我主要只是想看看它是如何工作的,所以我的设置如下所示:

我已经apply_async()通过在 Django 管理站点中安排它们来测试发布任务,并且两者都工作得很好。

我目前看到的唯一问题是我需要运行两个单独的进程来测试我的任务,django runserver并且django celerybeat. 当我更改周期性任务时,我需要重新启动celerybeat进程以使其重新加载。有什么方法可以让我运行celerybeat集成的进程runserver,以避免必须记住启动另一个进程?

0 投票
3 回答
1584 浏览

c++ - 避免数据损坏的文件结构

我目前正在为监控系统开发我们当前的媒体存储(用于存储视频/音频/元数据)的升级,并且我正在重新设计记录结构以提供更强大的解决方案。

我需要为存储在数据文件中的数据创建一些索引数据,所以我正在创建一个索引文件结构,但我担心硬盘故障(想象一下如果在写入索引文件期间断电,它将变得腐败,因为数据很可能会被写入一半)。我已经设计了索引的存储方式,但我担心的是电源故障或磁盘故障时的数据损坏

那么,有人知道在写入时避免数据损坏的技术吗?

我已经搜索了一下,没有找到好的解决方案,一个解决方案是创建一个写入文件的所有内容的日志,但是我每秒会有更多的 I/O(我关心 I/O 的数量) Os 每秒也是如此,系统应该尽可能少地执行)。

我想出的是在索引文件中复制敏感数据以及时间戳和校验和字段。例如:

Field1 Field2 Field3 时间戳校验和

Field1 Field2 Field3 时间戳校验和

所以,我将数据写入了两次,如果当我读取文件时,第一组字段已损坏(校验和不匹配),我有第二组字段应该没问题。我相信如果在中间停止写入时会发生损坏,因此,例如,当软件正在写入第一组字段并且电源故障时,第二组仍然完好无损......如果电源故障而第二set 正在编写中,第一个已经完好无损。

大家觉得这个解决方案怎么样?它是否避免数据损坏?

顺便说一句,由于部署具有事务性 NTFS 的系统的限制,我不能将任何类型的数据库用于这种存储或事务性 NTFS

欢迎任何想法,谢谢!

0 投票
2 回答
404 浏览

msmq - msmq 是否确保事务队列上的数据完整性?

我正在使用 MSMQ 传输byte数组。

格式化程序是一个BinaryMessageFormatter.

目标队列是私有队列,我使用的是直接 TCP 通信。

目标机器位于不同的 LAN 中,我通过其外部 IP 地址访问它。

有一个防火墙将传入的 TCP 通信路由到实际的目标机器(端口转发)。

所以系统的架构是这样的:

我已经使用该系统几个月了,一切都很好。

最近我们遇到了防火墙故障。

显然,这导致了数据损坏:

虽然队列是事务性的,并且根据 MSMQ,消息已成功传递到目标计算机,但消息的内容已损坏。

也就是说,从队列中读取消息的代码引发了异常:

我不得不从队列(顶部)删除一些消息,然后系统恢复正常。

我的问题:

假设只是防火墙的故障导致了这种情况,并且知道它是一个事务队列,那么为什么认为消息已传递?
MSMQ 不是在执行某种校验和以确保事务队列上的数据完整性吗?

0 投票
4 回答
9242 浏览

sql - 如何测试 SQL 脚本?(数据完整性/迁移测试)

我们的团队 (QA) 面临以下问题:

我们有一个数据库,只能由我们的应用程序访问,该应用Core程序是一个WCF services应用程序。我们的客户端应用程序正在使用Core访问数据库。

在某些时候,我们获得了我们的新版本Core application和我们的Database. 该Dev部门还给了我们一个 sql 脚本,它改变了我们的database Core data. core data用于描述我们系统的Core Application逻辑,因此对该数据的每次更改都可能影响我们客户端应用程序的任何功能。

我的问题是:

  • 我们应该再次测试我们所有的应用程序(即使它们已经完全测试)还是有更有效的方法来测试 SQL 脚本?
  • 是否有用于数据完整性/迁移测试的测试技术/工具?

在运行迁移脚本后,我正在寻找对数据库的快速有效性/完整性测试。这将防止我们通过应用程序对其进行测试而浪费时间。如果有效性/完整性测试成功,那么我们可以测试应用程序。

0 投票
1 回答
2226 浏览

java - 如何验证客户端-服务器连接之间的数据完整性?

我最近开发了一款在线多人游戏,它运行良好。有一个中央服务器处理与客户端的 TCP 连接,它们都接收和发送数据。
有没有办法在接收者读取数据之前验证发送的数据没有被修改?
TCP 连接是否以某种方式处理它?如果不是,实现它的最佳方式是什么(不要求代码)?
到现在为止,我想出了这些想法:

  • 修改发送的数据添加某种验证值,例如数据包长度。
  • 当收到一个数据包时,要求服务器再次发送它并验证它们是否相等。

我搜索了一个常用的解决方案,但找不到太多。
加密应该是我最后的选择。

编辑
对于实现此目的的简单方法:

  1. MD5
  2. SHA1
  3. SSL