English 中文(简体)
将文件上载到数据库
原标题:Uploading Files to a Database

我需要能够把几个档案上上载到一个数据库,并将它们与某个表格中的某一记录联系起来。 我最初想的是,收集所有必要的档案,并将由此产生的星号作为参数,连同其余记录数据送交一个储存程序,以便我可以确保,作为单一交易的行为,检索与某一记录相关的所有档案,将是一件事。 然而,由于业绩原因,该计划没有得到接受,现在我有两个选择:

  1. Create a data structure which wraps an array of byte[], (binary-)serialize it and send it along with the data; or

  2. 先修改其余数据,收集记录索引,并分别发送每个档案(与所指定的索引链接);

现在,1)看上去与我的第一个计划相去甚远,即使这一时间不会引起抑制,也有可能遭到拒绝。 备选案文2似乎是前进的道路,但我必须保证,我把记录的数据和档案上载在一次交易中,这将迫使我改变我的数据层(尽管略有改动)。

If you were facing this problem, which option would you choose? If none of those I stated above, which one then?

<><>Edit>: 该数据库位于一个远程服务器。 这些档案可能是任意的,尽管我并不期望这些档案比1-2MB大。 将档案存放在申请和数据库服务器都能查阅的地点,这不是一种选择,因此,我只能向数据库发送文件途径(这些档案必须真正储存在数据库中BLOBs)。

最佳回答

Your first plan was rejected due to performance issues - presumably this means network transfer speed?

您的候补计划是分别发送文件,然后将其与服务器连接起来。 这是一项细微计划,但你希望确保所有档案都上载,并在一次交易中投入使用。 其后,服务器在收到所有档案并成功投入使用之前,可以发出成功信号。

因此,您的第二种情况是,交易中必须填满同样数量的数据。 那么,它如何能够做得更好?

事实上,如果假定档案需要在单项交易中接收,你可以提出的任何可能的设计都会有同样的业绩问题。

你对交易的理解可能与我的理解不同,但通常在交易完成之前,你可以拿到和使用原先提交的剩余数据。 我认为,你的问题围绕的是你的系统所需要的单一交易性质,而不是任何网络瓶颈。

问题回答

我们根据当时的需求和档案的预期规模,对此采用两种不同的假设:

(1) 我们将档案输入接收系统,并将档案存放在接收系统的一个众所周知的地点(即使用国际统一登记局的档案名称的临时名录)。 这样做可以同步进行,以改进业绩。 您需要在与档案有关的记录中提供参考(例如GUID),以便接收系统能够找到档案。 由于记录正在写给数据库,我们将把档案内容纳入参数(储存程序参数),以便记录时间尽可能短。

2) 如果档案数量相对较少,我们将把档案输入记录中一个星号。 这当然最容易执行,但如果你的档案是巨大的,你在发送你的记录“超线”时就会失去对业绩的某种控制。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签