Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将数据存储在DB中,以便根据要插入的数据在插入之前知道主键_Sql_Image Processing_Coldfusion_Hash_Apache2 - Fatal编程技术网

Sql 将数据存储在DB中,以便根据要插入的数据在插入之前知道主键

Sql 将数据存储在DB中,以便根据要插入的数据在插入之前知道主键,sql,image-processing,coldfusion,hash,apache2,Sql,Image Processing,Coldfusion,Hash,Apache2,我试图完成的基本要点是设置一个图像处理服务器。由于页面代码是在Coldfusion中创建的,因此可能需要调整页面上的多个图像的大小,并用缩略图将其调整为适当的大小,每个图像的大小可能不同,并且每个图像的算法可能不同 其工作原理的基本要点是使用一个简单的img标记。src属性将指向图像服务器,如下所示 /.jpg”> 这允许在不同的服务器上异步调整图像大小,因此不会减慢当前页面调用的速度 当图像处理服务器接收到调用时,它将首先检查该文件是否存在,如果Apache确定该文件存在,它将立即为其提供服务

我试图完成的基本要点是设置一个图像处理服务器。由于页面代码是在Coldfusion中创建的,因此可能需要调整页面上的多个图像的大小,并用缩略图将其调整为适当的大小,每个图像的大小可能不同,并且每个图像的算法可能不同

其工作原理的基本要点是使用一个简单的img标记。src属性将指向图像服务器,如下所示

/.jpg”>

这允许在不同的服务器上异步调整图像大小,因此不会减慢当前页面调用的速度

当图像处理服务器接收到调用时,它将首先检查该文件是否存在,如果Apache确定该文件存在,它将立即为其提供服务,否则,它将调用Coldfusion,使用传递给它的主键从数据库中读取条目,以获取要处理的图像的URL和任何相关参数(在本例中,宽度、高度、方法、url、客户端,但将来可能会更多)

目前,我正在使用一个散列系统,其中参数按字母顺序排列,然后进行散列。这是一个合理的系统,还是即使散列的数据非常小(在50到200个字符之间),最终也会发生散列冲突。每个客户端可能存储多达10000个图像(在他们自己的文件夹中,因此散列冲突在跨客户端时不会成为问题)

为了减少数据库调用,在页面处理过程中,每次需要处理的图像时,我都会将该图像的信息添加到一个数组中。在页面末尾,我对数据库进行两次调用,首先检查我的数组中的行是否已经存在于数据库中,然后在必要时添加任何不存在的行(存储它们的各种参数).这里的困境是,primarykey(或图像标签中的内容)必须在实际插入数据库之前就知道,这样我就不会检查每个图像,因为某些页面上可能有数百个图像,这将非常低效

散列冲突是否与此样本大小无关(每个客户端由50-200个字符串生成10k个图像)?如果我做了一些简单的事情,比如
\uuuuu.jpg
,或者将图像放在
//x/.jpg
这样的文件夹中,会进一步降低散列冲突的可能性(尽管不会删除它们),会怎么样


有什么建议吗?

如何进行散列?使用SHA-512作为散列算法,您将得到一个128个字符长的字符串。您可能不希望URL如此长,但这里的想法是,您可以通过更复杂的算法来最小化冲突


尽管我怀疑您是否需要担心散列冲突,但您可能只想使用UUID


EDIT:或者使用uniqueidentifer作为存储文件的表的主键。插入后,可以使用查询的OUTPUT子句返回要使用的键。

我解决这一问题的方法是,不仅对文件名进行散列,而且对其参数(如宽度和高度)进行散列。因此,h灰烬碰撞基本上为0,直到我们达到数百万(数十亿?)条记录。到目前为止,我们还没有散列碰撞。

目前:
hash(#data.image###data.width##data.height##data.method#)
我做了类似的事情,我使用Java
HashMap
数据
结构排序,然后对该结构的
SerializeJSON
进行散列,以确定我的唯一标识符。到目前为止,我们还没有与大约100000条记录发生冲突。