avatar
D*y
1
【 以下文字转载自 Programming 讨论区 】
发信人: DrDonkey (DrDonkey), 信区: Programming
标 题: 问个best practice
发信站: BBS 未名空间站 (Wed Jan 7 20:53:45 2009), 转信
有一个table Products.
要求用户在web上搜索后返回随机顺序, 而且显示的时候要求带paging
请问我该怎么作?
是该一次把数据都从DB读出来,Populate到Product的object里面, 然后放到一个Arra
yList里面,Shuffle, 再从ArrayList里面提取objects来implement paging? 或者只把
ProductID放到Session里面,不过这要是Products table太大,也不太现实阿
还是该一次只读一部分数据(Items Per Page), 这样是不是必须用TempTable了阿(
SELECT
, then shuffle, then insert into temptable), 那岂不是每个用户session都要一个
tem
ptab
avatar
l*s
2
第二种方式满足要求吗?只是在page items里shuffle而不是全部结果?
如果满足那是Time vs Space的考虑

Arra

【在 D******y 的大作中提到】
: 【 以下文字转载自 Programming 讨论区 】
: 发信人: DrDonkey (DrDonkey), 信区: Programming
: 标 题: 问个best practice
: 发信站: BBS 未名空间站 (Wed Jan 7 20:53:45 2009), 转信
: 有一个table Products.
: 要求用户在web上搜索后返回随机顺序, 而且显示的时候要求带paging
: 请问我该怎么作?
: 是该一次把数据都从DB读出来,Populate到Product的object里面, 然后放到一个Arra
: yList里面,Shuffle, 再从ArrayList里面提取objects来implement paging? 或者只把
: ProductID放到Session里面,不过这要是Products table太大,也不太现实阿

avatar
D*y
3
thanks les
you are talking about using temp table?
i thought of select all records, then shuffle, then insert all record into a
temptable, so the records are all random sorted.

【在 l*s 的大作中提到】
: 第二种方式满足要求吗?只是在page items里shuffle而不是全部结果?
: 如果满足那是Time vs Space的考虑
:
: Arra

avatar
l*s
4
问题是如果每次分页前先shuffle所有结果,那么用户选取第一次选取第二页的内容将
和第二次选取第二页的返回结果不一样。
你的第一种方法(shuffle所有结果进cache然后分页)没有问题。我只是不太清楚我是
否理解了你第二种方法

a

【在 D******y 的大作中提到】
: thanks les
: you are talking about using temp table?
: i thought of select all records, then shuffle, then insert all record into a
: temptable, so the records are all random sorted.

avatar
D*y
5
the second apporach only shuffle the sequence once (and all), then each time
when select items for each page, no need shuffle again...

【在 l*s 的大作中提到】
: 问题是如果每次分页前先shuffle所有结果,那么用户选取第一次选取第二页的内容将
: 和第二次选取第二页的返回结果不一样。
: 你的第一种方法(shuffle所有结果进cache然后分页)没有问题。我只是不太清楚我是
: 否理解了你第二种方法
:
: a

avatar
l*s
6
第二种方法显然scalability差。
第一种方法如果data相对比较static,可以把所有数据放入singleton object或
application cache.然后每个用户的paged items放入context cache or object(not
session)

time

【在 D******y 的大作中提到】
: the second apporach only shuffle the sequence once (and all), then each time
: when select items for each page, no need shuffle again...

avatar
D*y
7
hi les, thanks again.
ok, let's talk about the 1st approach more.
users need "search" the items by certain properties, do you mean I should
search the items against the cached data (contain all items), that will be
really slow comparing with search against DB, right?
but if I store the search results for each user into the cache, if I got too
many users, that's a lot of memory cost....

【在 l*s 的大作中提到】
: 第二种方法显然scalability差。
: 第一种方法如果data相对比较static,可以把所有数据放入singleton object或
: application cache.然后每个用户的paged items放入context cache or object(not
: session)
:
: time

avatar
l*s
8
Search against the cache object is not necessary to be slower than search against db considering there is less overhead(connection initialization,data transfer)

too

【在 D******y 的大作中提到】
: hi les, thanks again.
: ok, let's talk about the 1st approach more.
: users need "search" the items by certain properties, do you mean I should
: search the items against the cached data (contain all items), that will be
: really slow comparing with search against DB, right?
: but if I store the search results for each user into the cache, if I got too
: many users, that's a lot of memory cost....

avatar
D*y
9
so i should store "dataset" in the cache instead of list of my "objects",
right?

against db considering there is less overhead(connection initialization,data
transfer)

【在 l*s 的大作中提到】
: Search against the cache object is not necessary to be slower than search against db considering there is less overhead(connection initialization,data transfer)
:
: too

avatar
l*s
10
It's up to you.

data

【在 D******y 的大作中提到】
: so i should store "dataset" in the cache instead of list of my "objects",
: right?
:
: against db considering there is less overhead(connection initialization,data
: transfer)

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。