老问题重新谈,还是关于数据库

10-01-21 zzxsky1986
    

今天遇到一个技术上的问题,还是老的话题。

一个软件设计是围绕数据库的还是领域对象的问题,问题是这样的。有两个系统,分别有两套数据库结构,经理非要将其中一个代码修改一下,将两个数据库结构融合在一起,也就是说原来是两张数据表现在放在一张里,目的是为了将两个系统做一个整合。

我的意思是在两个系统上添加一个公共接口,这样扩展第三个的时候也就不用修改现在的代码了。但是经理坚决的提出了反对,并且指责我说做系统就没有这么做的。并且用了一个例子告诉我,如果将来做查询统计怎么做?差一张表不比查几张表快?一共用户同时在两个表里都有记录,按照用户的总记录数做一个排序怎么做?当时我说了自己的想法,但是经理一句效率呢?把我问住了。

我确实不明白,如果按照设计模式去设计系统效率怎么样。做系统的时候真的可以不考虑数据库吗?

说句心里话,长久以来一到做查询统计的时候就头痛,说白了,还是让数据库去做这个工作效率最高,但是要是这样就必须从数据库的角度入手,分析设计系统。

至于缓存,说真的,缓存并不是时时刻刻都可以用在系统里的。一个几十万的数据做一下缓存用了8G,N多的历史记录数据库可想而知,如果都用缓存再好的硬件也无法胜任,靠缓存不是很现实,听听大家的想法,如果是你,你会怎么做。

    

banq
2010-01-22 09:39

2010年01月21日 22:31 "zzxsky1986"的内容
如果都用缓存再好的硬件也无法胜任,靠缓存不是很现实

缓存如果觉得不行,就使用分布式缓存MemoryCache,Facebook用了800台PC装了MemoryCache装了T级别以上数据。

海量存储解决方案现在已经相当成熟,这就是web2.0 社会媒体对软件技术的贡献和推动。

[该贴被banq于2010-01-22 09:40修改过]

beepbug
2010-01-30 11:23

如果原来有各自的数据库,现在要整合,当然得先把数据库整合成一个。数据库不整合,你再对象,再领域,再模式,也是隔山打牛,事倍功半都做不到。

数据库解决数据的问题,设计模式解决代码开发的问题,代码是数据之上的东西,不在一个层面。

这世上,至今还没有万能的东西。

mouqj
2010-02-06 08:33

数据库解决数据的问题,设计模式解决代码开发的问题,代码是数据之上的东西,不在一个层面。这世上,至今还没有万能的东西。

---------------------------------

这个十分赞同。

但从楼主提问的角度来说,可以提这么个问题,跨库联查是否有可行性。

譬如附件中的图片,表A在一个库中,表B在另一个库中,某个用户的数据,需要同时来自表A和表B,那么除了缓存的话,是否有其他思路?

另外问下banq老师,假如某个系统有多个数据源(库),而这些库并不互相独立,有一些关联,那么设计这些库的关联的时候,是否有什么需要特别留意?