由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 寻求java技术和解决方案
相关主题
memcachedAnnotations JPA Cachable vs Hibernate Cache
How to disable hibernate second-level cache for an entitywhat's inside an java object?
EHCache --- hibernate questionHow to know the size of a java object ?
探讨一个java, sql设计问题Java都在什么时候进行Garbage collection?
Do I need to implement equals and hashCode in domain objectJ2EE or DotNet?
问个JAVA设计多线程cache问题关于singleton
请问一个ehcache的问题What's the relationship between Enterprise JavaBe
JBoss 4.0.4 is slow down in every 20 daysJFTP 0.0.3 release
相关话题的讨论汇总
话题: object话题: 修改话题: 用户话题: domain话题: page
进入Java版参与讨论
1 (共1页)
b******e
发帖数: 1861
1
要用java实现一个模块,数据存储于数据库,支持oracle和sql server,UI部分要支持
cache修
改。就是说用户打开某个domain object,可以修改这个domain object, 例如add item,
remove item, modify item, and similar to any descendent objects of this
domain object from UI. 在这个过程中,用户可以点击其他页面而离开这个页面,但
是用户做的
的change不能丢掉,当这个用户重新打开这个domain object,他能够继续上次的修改。
当用户点击
save按钮时,所有的修改才真正存储进数据库。如果点击discard,所作修改都丢弃。
我现在能想到的方法有两个,都需要temporary table,基本上的思路是用户的修改放到
临时表里,在
save时同步连个表。第一种办法最简单,就是在打开某一个domain object时把所有相
关数据都拷贝
到临时表,然后所有用户操作都发生在临时表上,另一种只把update操作数据放到临时
表里,add和
delete都在原表上。第一种方法简单但是性能问题很大,第二种性能好,但是实现起来
要复杂。
大家看看有没有其他的办法,其他技术能解决这种问题。如果relational database有
Limitation,可以尝试object oriented database。或者其他任何open source
project提
供这方面的解决方案。
另外要补充的是一次修改的数据量很大,可能涉及到几十万到百万records,所以内存cache可能不
行。
g*****g
发帖数: 34805
2
In memory caching with local disk IO turning on is your friend.
You can leverage lib like ehCache.Load the hot section in memory and the
rest of it in disk.Flush on save/discard
b******e
发帖数: 1861
3
如果需求要求系统重启后上次修改的数据还在,cache方法怎么解决temporary
persistence问
题?还有一个难点是UI要显示所有项,是paging的,backend的做法目前是通过query
table结合
cursor实现的。如果用cache,不知道怎么把这个结合到一起。

【在 g*****g 的大作中提到】
: In memory caching with local disk IO turning on is your friend.
: You can leverage lib like ehCache.Load the hot section in memory and the
: rest of it in disk.Flush on save/discard

g*****g
发帖数: 34805
4
For graceful shutdown, ehCache can flush the data before
JVM got shut down. And the data can be persisted between
restarts, it's just a configuration in ehCache.
Or you can have a file-based ad-hoc caching that you can
flush whenever you feel right.
In paging, you can use your old method to load data, and
use your local changes to override modified entries
before display.

【在 b******e 的大作中提到】
: 如果需求要求系统重启后上次修改的数据还在,cache方法怎么解决temporary
: persistence问
: 题?还有一个难点是UI要显示所有项,是paging的,backend的做法目前是通过query
: table结合
: cursor实现的。如果用cache,不知道怎么把这个结合到一起。

b******e
发帖数: 1861
5
根据你说的大部分我想要的都可以用这种方法解决,但是最后还有个sorting或
filtering问题,我们
paging要求loading时不能全部Load进来,只从数据库load一个Page,如果用户选择了
sort或者
filter的话,原来我们可以append这些sort或者filter条件到query sql上,这样当前
page就可
以相应刷新了,但是现在由于修改内容在cache里,我们没有办法sort和filter了,因
为修改可能导
致其他record进入这个page。这个只有merge后再能知道,而不是query时知道。

【在 g*****g 的大作中提到】
: For graceful shutdown, ehCache can flush the data before
: JVM got shut down. And the data can be persisted between
: restarts, it's just a configuration in ehCache.
: Or you can have a file-based ad-hoc caching that you can
: flush whenever you feel right.
: In paging, you can use your old method to load data, and
: use your local changes to override modified entries
: before display.

g*****g
发帖数: 34805
6
Use a slightly bigger page window than what you need to display
and adjust after merge,
or query and merge, calculate the missing entries and query/merge
again until it fills the page.
Users typically want them to be sorted, but they don't care if
the entries should be in page 35 or page 36. There are certain
inaccuracy you can get away with.

【在 b******e 的大作中提到】
: 根据你说的大部分我想要的都可以用这种方法解决,但是最后还有个sorting或
: filtering问题,我们
: paging要求loading时不能全部Load进来,只从数据库load一个Page,如果用户选择了
: sort或者
: filter的话,原来我们可以append这些sort或者filter条件到query sql上,这样当前
: page就可
: 以相应刷新了,但是现在由于修改内容在cache里,我们没有办法sort和filter了,因
: 为修改可能导
: 致其他record进入这个page。这个只有merge后再能知道,而不是query时知道。

B*****g
发帖数: 34098
7
虽然现在不懂,但是这个看起来不错。

择了
当前
,因

【在 g*****g 的大作中提到】
: Use a slightly bigger page window than what you need to display
: and adjust after merge,
: or query and merge, calculate the missing entries and query/merge
: again until it fills the page.
: Users typically want them to be sorted, but they don't care if
: the entries should be in page 35 or page 36. There are certain
: inaccuracy you can get away with.

B*****g
发帖数: 34098
8
多用户同时修改一个数据怎么解决?

择了
当前
,因

【在 g*****g 的大作中提到】
: Use a slightly bigger page window than what you need to display
: and adjust after merge,
: or query and merge, calculate the missing entries and query/merge
: again until it fills the page.
: Users typically want them to be sorted, but they don't care if
: the entries should be in page 35 or page 36. There are certain
: inaccuracy you can get away with.

b******e
发帖数: 1861
9
不允许多用户同时修改一个domain object,一个用户打开时要Lock这个domain object.

【在 B*****g 的大作中提到】
: 多用户同时修改一个数据怎么解决?
:
: 择了
: 当前
: ,因

B*****g
发帖数: 34098
10
如果系统重启后,lock的用户再也不login unlock咋办?

object.

【在 b******e 的大作中提到】
: 不允许多用户同时修改一个domain object,一个用户打开时要Lock这个domain object.
g*****g
发帖数: 34805
11
This has nothing to do with this design.
This is one issue for any concurrent application accessing DB.
Typically you can adjust isolation level of Oracle according to
what you need.
Most applications will simply keep the read data local and allow
all writes going through.

【在 B*****g 的大作中提到】
: 多用户同时修改一个数据怎么解决?
:
: 择了
: 当前
: ,因

1 (共1页)
进入Java版参与讨论
相关主题
JFTP 0.0.3 releaseDo I need to implement equals and hashCode in domain object
更好的使用google问个JAVA设计多线程cache问题
有经验的同志谈谈JDO吧?请问一个ehcache的问题
Who's online--JSP?JBoss 4.0.4 is slow down in every 20 days
memcachedAnnotations JPA Cachable vs Hibernate Cache
How to disable hibernate second-level cache for an entitywhat's inside an java object?
EHCache --- hibernate questionHow to know the size of a java object ?
探讨一个java, sql设计问题Java都在什么时候进行Garbage collection?
相关话题的讨论汇总
话题: object话题: 修改话题: 用户话题: domain话题: page