问题标签 [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.
java - 如何使用 SHA2 验证数据完整性?
我在实现 digest() 时出错;
php - 如何“测试” MySQL 服务器的完整性?
我在共享 Web 托管上的一些网站丢失了绑定到各自 MySQL 数据库的数据时遇到了麻烦。我的提供商不提供对 MySQL 日志的访问。周一他们让服务器工程师调查这个问题。但是,我想有一些具体的数据来说明问题的严重程度。
什么是一种好方法,最好是使用 PHP,来证明数据在进入 MySQL 数据库的过程中被丢弃了?是否有用于此类测试的现有工具?Drupal 模块将是理想的,因为我可以简单地安装它以在我已经配置的站点之一上临时运行?
ps - 是的,我很快就会将网站从共享主机中移出。:)
sql - 开放时间数据库设计
我们目前正在开发一个应用程序,其中多个实体具有关联的营业时间。开放时间可能跨越多天,也可能包含在一天之内。
前任。周一 6:00 开放,周五 18:00 关闭。
或者
周一 06:00 开放,周一 15:00 关闭。
此外,一个实体每天可能有多组营业时间。到目前为止,我发现的最好的设计是定义一个开放时间,包括以下内容:
开始日、开始时间、结束日和结束时间。
这种设计允许所有需要的灵活性。但是,数据完整性成为一个问题。我似乎找不到一个不允许重叠跨度的解决方案(在数据库中)。
请分享你的想法。
编辑:数据库是 Microsoft SQL Server 2008 R2
c# - 带有前面验证命令的创建命令上的 MongoDB 数据完整性
我正在创建的网站允许用户在网站上拥有一个唯一的子域,例如;gaz123.mywebsite.com。
他们在网站上注册时会进入他们的子域。在创建帐户记录之前的代码中,我检查他们选择的子域是否不存在。这只是对具有相同子域的帐户的简单查询。如果这返回零计数,那么我继续并使用该子域创建帐户。
我在两个 MongoDB 命令周围放置了一个 lock() 命令,即;检查子域是否可用,然后创建帐户。然后我松开锁。
你会这样做吗?还有其他更好的方法吗?为什么?
谢谢
mvvm - 多个 ViewModel 请求相同的域对象,我应该给它们相同/不同的实例吗?
新手,对不起,如果这是一个明显的问题,对不起我的英语。我试图谷歌但没有找到我的问题的答案。
我只使用 Visual Studio、Autofac、EF CTP5 代码(由于 EF CTP5 不支持 IoC 容器,稍后可能会切换到 HHibernate),并尝试使用以下模式:MVVM、DI、DDD。
我的问题是:当多个 ViewModel 从存储库请求相同的域对象时,我应该给它们相同的实例还是为每个请求创建一个新实例?
如果我为每个请求创建一个新实例,我想我会这样写:
在任何 ViewModle 修改其域对象实例之后,我必须找到一种方法来通知所有其他 ViweModel 更新它们的实例,以确保数据完整性。
如果我为所有请求提供相同的域对象实例,那么我想我将不得不编写如下内容:
而且我还需要找到一种方法在任何 ViewModel 不需要实例时从缓存中删除它们(或对缓存使用弱引用),以避免内存泄漏。
我应该走哪条路?我有更好的选择吗?
谢谢!
编辑:更改内容以获得更好的描述。
(对不起我的英语不好)
更新:
在我对此做了一些研究之后,我意识到这个问题太令人困惑了,所以我在这里发布了一个新问题:Multiple ViewModels modify the same domain object
core-data - 多对多结构中的删除
我只是想快速检查一下。假设我在数据模型中有两个实体:目录和产品。它们之间是多对多的关系,并且两者都是必需的(一个目录必须至少有一个产品,并且所有产品都必须分别属于至少一个目录)。所以如果我要删除一个产品,它的删除当然应该是 Nullify。
但是目录的删除策略应该是什么?如果目录被删除,则并非其所有产品都必须完全属于该目录。一个产品可能属于多个目录。所以我绝对不应该使用 Cascade。但是,Nullify 就足够了吗?如果我最终得到不属于目录的悬空产品怎么办?Core Data 内置了什么可以解决多对多模式的这个问题?我需要修改我的架构吗?
c# - 在两个不同数据库之间比较大量数据的最佳方法是什么?
我有一个桌面应用程序从 web 服务接收数据并将其存储在本地 postgresql 数据库中(而 web 服务从 SQL Server 数据库中检索数据)。在该过程结束时,我的本地数据库中的一个表中至少有 250 万个条目,但这将在大约 15 天的时间范围内以大约 300 行的批次从 de webservice 接收。
我需要一种方法来确保我的本地数据库具有与服务器数据库完全相同的信息。
我正在考虑为收到的每个批次创建某种校验和,然后,在收到所有批次后,整个表的另一个校验和,但我不知道这是否是最好的解决方案,如果是,我不知道知道从哪里开始创建它。
PS:TCP 已经处理了完整性检查,所以我什至不知道是否需要这样做,但数据相同至关重要。
hash - 文件完整性检查
我们有大量(10 多个)非常大的文件(> 1 GB),我们在我们的网络中共享这些文件。偶尔也会有一些较小的文件。
无论如何,我们希望确保这些文件在传输后是正确的。所以我想我可以创建一个工具来计算几个不同的哈希值(SHA1 和 MD5,也可能是 CRC32)并将其保存在元数据文件中。接收端的任何人都可以使用该工具验证文件。
我是否应该担心鉴于文件的大小,损坏的文件可能会与原始文件产生冲突?我不担心有人故意产生碰撞。
在这种情况下,也可以选择使用 bittorrent,因为它会计算小得多的块(几 KB 到几 MB)的 SHA1。另一个优点是它甚至可以处理数据传输。但这也带来了不便,因为同一个块可能属于不同的文件——在这种情况下,您需要文件的“邻居”来验证它。当然我可以添加虚拟填充,但现在我让事情变得复杂了。
我知道 2^80 甚至 2^64 都是相当大的数字,并且哈希被设计为具有“雪崩效应”,所以也许我只是有点偏执。
triggers - 在 SQLite 数据库中,使用 tirggers 处理级联表更改更好,还是以编程方式更好?
背景
我有几个使用 SQLite DB 存储数据的项目。存储在数据库中的数据显然存储在多个表中,通过键/外键值链接。
问题是在这些数据库中,如果一条记录发生变化,我必须更新其他几个表。我脑海中最好的例子就是删除一条记录。我必须确保与被删除的记录相关的所有其他记录也被删除。现在,我相信这个例子可以使用键/外键值来解决,但是更复杂的更新呢?
现在我不是专业的数据库管理员,但我知道数据库中需要数据完整性,否则事情会变得丑陋。
问题
所以,我的问题。我知道以编程方式更新相关表时我有更大的控制权,但代价是人为错误和时间。我可能会遗漏一些东西或没有正确实现表更新,并且在更新中编写代码需要更长的时间。另一方面,我可以放入触发器并让数据库处理对其他表的更新,但我会失去很多控制权。
那么,哪一个更好呢?在不同的情况下每个更好吗?
mysql - 在mysql中重新索引位置列
这是一个 MySQL 问题:
我有一个具有以下结构的表。
每个项目都应该有一个位置,每个位置只能使用一次。位置应该增加(所以如果有 40 个项目,那么位置应该从 1 到 40)。
然而,这个表中的数据到处都是(同一个位置被多次使用,有些行没有位置)。我想通过重新索引位置来重置表格。我想在这样做时尊重现有的订单(即使它们并不完美)(如果可能的话 - 如果不是,可以丢弃这些职位)。
期望的
编辑:对不起,简单地自动增加位置列将不起作用,因为该表描述了多个父项中项目的位置(并且项目可以有多个父项)