2012-07-30 111 views
0

我期待为.net web窗体中的一系列字段创建智能感知,这将使用户能够单击其中一个选项,然后将填充一系列字段(名称,地址等)。这对于使用c#.net和ajax来实现是非常简单的。然而,最近我被迫加密了一些正在搜索数据库的关键字段,所以现在这个功能被破坏了。我们解密这些可搜索字段的唯一方法是使用C#.net。将大型数据集存储在内存或客户端

为了解决这个问题,我想到了: a)当页面加载时,抓取所有记录并将其存储在数组中(未加密),并且用户在搜索字段中键入linq或拉姆达获取感兴趣的记录。 b)加载页面时,将所有记录存储在js数组中(未加密)并执行搜索客户端。

对于我的web服务器和客户端的浏览体验,哪一条最适合性能考虑?

我在想这会是< 100k条记录。

+0

在搜索之前不能加密相应的密钥吗?即。你可以搜索'name ='02h37xsdfh5h5h23h34h''或者其他任何类似于db – Daniel 2012-07-30 14:07:00

+0

的搜索名称,而不是搜索'name ='smith''。他们可能用于完全匹配,但可以说有人输入'smi'。 – jreed350z 2012-07-30 14:23:38

+0

好吧,我认为这是查询全键,我的不好 – Daniel 2012-07-30 19:20:21

回答

1

为什么不将记录存储在服务器缓存中并发出ajax请求。这样做将使记录集可供所有用户使用。

+0

但你如何确保记录是最新的。你仍然需要刷新每个用户,对吧? – jreed350z 2012-07-30 14:26:59

+0

http://stackoverflow.com/questions/1434284/when-does-asp-net-remove-expired-cache-items – Nathan 2012-07-30 15:10:45

1

哇,所以这是加密的动态数据。

在每个页面加载时向客户端发送大量记录会很慢。

您可能会使用动态缓存,每隔几秒加载一次数据。

1

每一行有多大? 〜100k行可以是很多数据。

客户端上的客户端

100K上是大量的数据,即使是数据的一对夫妇列。这只是数据,然后是搜索它的问题。这是桌面浏览器的问题。它会杀死一个手机浏览器。

在服务器

这是更合理的。

需要考虑的事情:

  • 多少内存将加载所有结果存入内存消耗?
  • 将所有记录加载到内存中的延迟(网络,数据库)是什么?也许它可以做到异步,以减轻对用户的影响。
  • 在C#中搜索可以很快,特别是在使用字典时,它不如数据库快。您是否考虑过只将需要解密的数据存储在内存中,并将剩余的数据留在数据库中。需要时从数据库中获取其余数据?

Ajax仍然是可能的(假设数据存储在服务器上)。您必须将搜索请求路由到正确的商店(在内存,数据库或两者的混合中)。

+0

我喜欢你的想法,只存储需要解密的数据,并有一个ID列指向有问题的记录。我会做一些测试,看看会消耗什么类型的延迟和内存,然后我想通过每日平均使用量来乘以。我也很好奇使用服务将这些记录加载到共享缓存中。我认为,即使记录只是每天刷新1次或2次,也足够了。 – jreed350z 2012-07-30 15:46:24

+0

当然,我想我需要检查一下商业方面,以确认刷新频率需要多少。 – jreed350z 2012-07-30 15:48:04