问题标签 [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 投票
5 回答
433 浏览

database-design - 如何使用多个数据库挽救参照完整性

我正在设计一个系统,该系统将用于为全国多个生产站点提供数据(所有信息都在一个站点中),并有可能添加更多。最初我认为我可以只使用一个数据库就可以逃脱。我现在正在重新考虑我的原始设计并倾向于一个更具可扩展性的解决方案。保持每个数据库/表的大小也很重要。

将有一个“主”数据库,其中包含跨越站点概念的信息,然后为每个站点创建一个单独的数据库,其中包含特定于站点的信息。

我的斗争是在哪里分离数据。这些数据都是相当相关的。无论我在哪里做,我都会失去一些参照完整性。我读到的所有内容都说要不惜一切代价避免这种情况,因为我认为这是非常好的理由,但我看不到解决办法。

我已经研究过触发器,但如果数据库位于不同的服务器上,我认为它们不会起作用(虽然不确定——我认为 Oracle 会这样做)。我仅限于开源解决方案,因此如果有帮助的话,它将是 MySQL 或 postgre。

有没有人有一些建议来缓解这个问题或有其他设计建议?

0 投票
2 回答
1877 浏览

ftp - 如何在不尝试加载的情况下验证 Sybase 转储文件的完整性?

这是场景 - 客户端将 Sybase 转储文件上传到(gzip 压缩)到我们的本地 FTP 服务器。我们有一个自动化流程,它会挑选这些数据,然后将它们移动到数据库服务器所在的网络中的不同服务器。不幸的是,这种传输是通过 WAN 进行的,对于大文件需要很长时间,有时我们的客户忘记以二进制模式进行 FTP,这导致通过我们的 WAN 进行 10GB 的传输,因为无法加载转储文件。在另一端。我想做的是在通过 WAN 发送之前验证本地服务器上的转储文件的完整性,但我不能只是尝试“加载”转储文件,因为我们没有 Sybase已安装(并且无法安装)。我可以使用任何工具或代码来执行此操作吗?

0 投票
2 回答
3304 浏览

java - 关于使用 Terracotta 作为持久性解决方案

将 Terracotta 用作持久性解决方案(替换数据库)是个好主意吗?我特别想知道数据完整性问题和对事务系统的支持。

0 投票
5 回答
3338 浏览

java - 如何在文件写入失败时确保文件完整性?

跟进如何安全地更新一个有许多读者和一个作者的文件?

在我之前的问题中,我发现您可以使用 FileChannel 的锁来确保读取和写入的顺序。

但是,如果编写器在写入过程中失败(比如 JVM 崩溃),您将如何处理这种情况?这个基本算法看起来像,

如果 JVM 在 期间崩溃write file,肯定会释放锁,但现在我有一个不完整的文件。我想要完整的东西总是可读的。要么是旧内容,要么是新内容,两者之间没有任何内容。

我的第一个策略是写入一个临时文件,然后将内容复制到“实时”文件中(同时确保良好的锁定)。算法是,

一件好事是,delete temp如果临时文件已被另一位作家锁定,则不会删除临时文件。

但是如果 JVM 在copy temp to file. 然后我添加了一个copying标志,

永远不会有两件事访问该copying文件,因为它受到文件锁的保护。

现在,这是这样做的方法吗?确保非常简单的事情似乎很复杂。是否有一些 Java 库可以为我处理这个问题?

编辑

好吧,我设法在第三次尝试中犯了一个错误。阅读器不会将锁锁定到 temp copy temp to file。简单地锁定临时文件也不是一个简单的修复!这将导致写入者和读取者以不同的顺序获取锁,并可能导致死锁。这一直在变得越来越复杂。这是我的第四次尝试,

这次临时文件由主锁保护,因此它甚至不需要自己的锁。

编辑 2

当我说 JVM 崩溃时,我的意思是说电源坏了,而你没有 UPS。

编辑 3

我仍然设法犯了另一个错误。您不应该锁定您正在写入或读取的文件。这将导致问题,因为除非您在 Java 中使用 RandomAccessFile,否则您无法同时获得读取和写入锁,它不实现输入/输出流。

相反,您要做的只是锁定一个锁定文件,该锁定文件保护您正在读取或写入的文件。这是更新的算法:

锁定和释放保护文件、临时文件和复制标志。唯一的问题是现在不能共享读卡器锁,但它永远不可能真正共享。读者总是有机会修改文件,因此一开始就创建一个可共享的锁是错误的。

0 投票
2 回答
519 浏览

maintenance - 在维护期间保持系统的概念完整性

在开始一个新项目时,我们会根据“最新”和“已知”来启动它。

这包括选择编程语言、这些语言的框架等。在使用特定框架和设计模式等方面,相当多的时间花在架构设计和详细关卡设计上。

事情进展顺利,直到我们完成开发并将其推向生产。

然后是维护(缺陷修复和增强)。人变了,建筑师和设计师搬走了。

可能没有任何项目历史细节的新人现在正在维护它。他们开始包含架构、设计原则等方面的内容,以提供快速修复和添加增强功能。

我在我工作过的许多项目中都看到了这种趋势。

在进行维护的同时如何保持系统的“概念完整性”?

0 投票
2 回答
1148 浏览

c# - 如何在 Perl 中加密消息以在 C# 中解密?

我需要使用 Perl 加密并在 .Net (C#) 上解密。即 Perl 加密文件,我的 .Net 代码解密文件(甚至可能验证完整性)。

问题是我不熟悉 Perl 的加密功能。任何人都可以就如何最好地解决这个问题以及可能性是什么提供指导吗?

提前致谢!

直流

0 投票
6 回答
2007 浏览

database - 如何根据我的数据库模式验证客户端数据库?

我们的客户使用 SQLServer/Oracle 数据库。多年来,我们向他们发送了许多必须手动运行的更新脚本。大多数情况下,一切都很顺利,但有时脚本没有完全运行到最后或者有一些错误(升级时没有检测到)。此外,有时甚至“聪明的用户”也出于某种原因将索引/表添加到这些数据库中。后来,这些违规行为会导致问题。

现在我的任务是找出一种方法来根据我们自己的数据库模式(表、数据类型、索引、视图......)来验证/验证我们的客户数据库。输出应该是某种差异文件,指示数据库中缺少什么/不应该是什么。我可以在我们的应用程序内部使用代码 (C++) 执行此操作,或者我可以为此目的创建一个外部工具。

现在在我开始编码之前,我想问一下是否已经有一个工具可以产生必要的结果,或者至少可以帮助我从我们的主数据库(Oracle 和 SQLServer)产生一个像样的 xml 文件?或者是否有一个库可以帮助我编写自己的工具?

0 投票
2 回答
322 浏览

sql-server - 如何检查存储过程的完整性

我们有一个包含大量存储过程的大型数据库。现在我们正在更新我们的数据库,但一些存储过程仍然使用旧结构。我们发现他们中的大多数都使用“sp_depends”,但有些 sp 漏掉了。

我想知道是否没有办法检查所有存储过程。如果他们要求一个不再存在的列,你会得到一个错误。

谢谢

0 投票
1 回答
983 浏览

java - RandomAccessFile.close() 是否在内部调用 FileChannel.force()?

作为事务的一部分,我正在使用 RandomAccessFile 对文件执行一些写入操作。在提交事务之前,我想绝对确定数据已写入磁盘。调用force(boolean)RAFFileChannel似乎提供了这种保证,但是当我关闭文件时它是隐式调用的,还是我必须手动调用它?

force()此外,是否有人对实际执行的操作以及可以信任的程度有任何见解?操作系统是否有可能报告数据已写入磁盘,而实际上它仍位于某个缓存中?这个 OS/HDD/文件系统在多大程度上是依赖的?

0 投票
3 回答
670 浏览

security - Online checksum checker for client side application

My client side application works only when online.

Could i check the integrity of a winforms client application on server side?

I would like to make my application useless when it will be pached.

I mean these guys http://www.webutils.pl/SFV_Calculator have something similar.

Of course in my case i don't want to upload the file, but perform a quick check regarding the application integrity.