jonathanks
2011-07-13 14:50

在In-Memery Cache一文中,banq提到:

"Java内存模型优点:基于内存的并发模型,多线程机制,大量线程安全型库包支持基于内存的并发机制,粒度灵活控制,灵活度高于数据库锁。"

这句话如何理解?

banq
2011-07-13 16:22

2011年07月13日 14:50 "@jonathanks"的内容
这句话如何理解 ...

提倡尽量使用内存锁替代数据库锁机制,当然多线程自身特点改变不了其锁争夺的本质问题,追求更高性能寄希望于Scala等这些Actor模型语言。

jonathanks
2011-07-13 16:26

2011年07月13日 16:22 "@banq"的内容
追求更高性能寄希望于Scala等这些Actor模型语言 ...

感觉从一个问题引向了另一个问题了。

在Java技术领域内的内存锁和基于缓存的数据库锁,在灵活度上该如何比较?如何才能深入理解?

banq
2011-07-13 16:41

2011年07月13日 16:26 "@jonathanks"的内容
在Java技术领域内的内存锁和基于缓存的数据库锁,在灵活度上该如何比较 ...

内存锁实际是Java语言自身的锁机制,锁的粒度和对象粒度相同,这样你可以根据DDD等基于业务设计不同的对象,比如订单中价格如果经常变化,可以把价格单独作为一个对象,这样不至于因为修改价格将整个订单锁住,关键是对象的边界划分很灵活方便,而数据表结构改变涉及面广。

jonathanks
2011-07-13 17:47

2011年07月13日 16:41 "@banq"的内容
比如订单中价格如果经常变化,可以把价格单独作为一个对象 ...

那么在数据库端的话就是一个关联表的形式咯。

这样以来,基于业务设计的对象,在数据库层面会在某种程度上去冗余化,关联表增加,那么对于互联网应用来说,这种表的增加可能会带来数据库的压力。可以这样理解吗?