我有一个用Delphi编写的命令行工具,其工作是在XML文件中插入一个节点,然后立即退出.我需要使工具的几个实例同时执行,并将节点插入到同一个XML中.
为了实现这个目的,我引入了一个简单的文件"mutex" - 该工具在写入XML之前创建一个临时文件,然后在完成witing之后删除临时文件.因此,如果执行另一个实例,它会检查是否存在此临时文件,并等待它被删除.然后它再次创建临时文件,写入XML并删除临时文件.
问题是只有当2-3个实例尝试同时写入XML文件时才能正常工作.当有更多实例时 - 其中一些实例只是永远等待,并且永远不会将节点附加到XML中.
是否有更好的方法可以使大量实例同时运行并写入XML?
表1:包括厨房水槽在内的一切.日期格式错误(年末,因此您无法对该列进行排序),存储为VARCHAR的数字,"street"列中的完整地址,firstname列中的firstname和lastname,lastname列中的city,不完整的地址,行数根据多年来发生变化的一些规则,重复记录,不完整记录,垃圾记录......将数据从一个字段移动到另一个字段,从而更新前一行...您可以将其命名为...哦,当然不是TIMESTAMP或PRIMARY KEY栏目即将来临.
表2:打开这个婴儿后,任何正常化的希望都消失了.对于表1中的每个条目和行更新,我们都有一行.所以复制品就像没有明天(800MB价值)和像Phone1 Phone2 Phone3 Phone4 ... Phone15这样的列(它们不叫电话.我用它来说明)foriegn键是......好好猜测.根据表1中行的数据类型,有三个候选项
表3:它会变得更糟吗?哦,是的."外键是短划线,点,数字和字母的VARCHAR列组合!如果不提供匹配(通常不提供),那么类似产品代码的第二列应该.具有名称的列与它们内部的数据没有关联,并且必须与Phone1进行电话交换... Phone15.从Table1复制列,而不是TIMESTAMP或PRIMARY KEY列.
表4:被描述为一项工作,并且随时可能发生变化.它与其他人相似.
在接近1米的行中,这是一个很大的混乱.幸运的是,这不是我的大混乱.不幸的是,我必须为每个"客户"提供一份复合记录.
最初,我设计了Table1的四步翻译,添加了一个PRIMARY KEY并将所有日期转换为可排序的格式.然后是几个返回过滤数据的查询步骤,直到我将Table1用于从其他表中拉出以形成合成.经过数周的工作,我使用一些技巧将其降低到一步.所以现在我可以将我的应用程序指向混乱并提取一个很好的合成数据表.幸运的是,我只需要一个电话号码,因此我的桌子正常化不是问题.
然而,这是真正的任务开始的地方,因为每天都有数百名员工以您不想要的方式添加/更新/删除此数据库,每天晚上我必须检索新行.
由于任何表中的现有行都可以更改,并且由于没有TIMESTAMP ON UPDATE列,因此我将不得不求助于日志以了解发生了什么.当然这假设有一个二进制日志,但没有!
介绍这个概念就像铅气球一样.我不妨告诉他们,他们的孩子将不得不接受实验性手术.他们并不完全是高科技...如果你没有聚集......
这种情况有点微妙,因为它们有一些我公司非常想要的有价值的信息.我被一家大公司的高级管理人员(你知道他们是怎么做的)发送给"实现它".
我想不出处理夜间更新的任何其他方法,比用另一个应用程序解析bin日志文件,弄清楚他们在白天对该数据库做了什么,然后相应地合成我的表.我真的只需要看看他们的table1来弄清楚该怎么做我的桌子.其他表只提供清除记录的字段.(使用MASTER SLAVE无济于事,因为我会有一塌糊涂.)
另一种方法是为table1的每一行创建一个唯一的哈希,并构建一个哈希表.然后我会每晚检查整个ENTIRE数据库,看看哈希值是否匹配.如果他们没有那么我会读取该记录并检查它是否存在于我的数据库中,如果确实存在,那么我会在我的数据库中更新它,如果它没有那么它是一个新的记录,我会插入它.这很难看并且不快,但解析二进制日志文件也不是很好.
我写这篇文章是为了帮助弄清楚这个问题.经常告诉别人有助于澄清问题,使解决方案更加明显.在这种情况下,我只是有一个更大的头痛!
非常感谢您的想法.
正如标题所说:非安全随机数发生器和安全随机数发生器之间有什么区别?
定义XML架构(XSD)时是否有"选择"或"组"元素是否有效?
即以下是有效的
<xs:complexType name="HeaderType">
<xs:sequence>
<xs:element name="reservation-number" type="ReservationNumberType" minOccurs="1" maxOccurs="1" nillable="false" />
<xs:choice minOccurs="1" maxOccurs="1">
<xs:group ref="ReservationGroup" />
<xs:group ref="CancellationGroup"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
例如,XML消息可以表示新预留或取消现有预留.
如果消息用于预留,则它必须包括ReservationGroup组中定义的所有元素.
如果是取消,则必须包含CancellationGroup组中定义的所有元素.
出于某种原因,我的XML编辑器(Eclipse)不喜欢这样,但没有说明原因.它显示行<xs:complexType name ="HeaderType">上有错误,但没有说明错误是什么
你如何生成密码?
像这样的东西?
cat /dev/urandom | strings
Run Code Online (Sandbox Code Playgroud) PHP有一个自动生成类变量的方法吗?我想我以前见过这样的东西,但我不确定.
public class TestClass {
private $data = array();
public function TestClass() {
$this->data['firstValue'] = "cheese";
}
}
Run Code Online (Sandbox Code Playgroud)
该$this->data
数组始终是一个关联数组,但它们的键从一个类更改为类.有没有访问任何可行的方法, $this->data['firstValue']
从$this->firstValue
而无需定义的联系?
如果是的话,它有什么缺点吗?
或者是否存在一种静态方法来定义链接,如果$this->data
数组不包含该键,则不会爆炸?
无论是命令行还是GUI,我都有兴趣测试它们.
有人知道如何从 3gb 视频文件中获取缩略图(静止图像)吗?第一帧或类似的东西。我使用的是 .net,但解决方案可以是任何语言(托管或本机)或第三方产品。
SQL开发人员如何着手跟上SQL世界中的当前技术和趋势?是否有任何博客,书籍,文章,技术等用于保持最新和知识?
面向OO,程序和功能程序员参与各种开源项目有很多机会,但在我看来,对于SQL开发人员而言,FOSS大道更加封闭.
思考?
random ×2
xml ×2
3gp ×1
ascii ×1
binary-log ×1
biztalk ×1
c++ ×1
character ×1
choice ×1
command-line ×1
cryptography ×1
database ×1
delphi ×1
ffmpeg ×1
monitoring ×1
mutex ×1
mysql ×1
oop ×1
passphrase ×1
passwords ×1
php ×1
refactoring ×1
schema ×1
sql-server ×1
xsd ×1