把每个表都作为一个数据库连接字符串,所谓的分布式表,来设计。如何?
比如商品关联表、用户关联表、订单关联表,分成三个数据库。这样也是无法join的。那如何去设计呢,难道用web api ,wcf这样去写接口吗?
非常不推荐这种做法.
首先,如果是按业务纵向拆分的话,也是将业务相关的表放在一个单独的库,而不是一个表一个字符串...你这样是没有办法 join查询的.
另外,如果这个系统需要用到大量分布式DB的话,不要用关系型DB,很不方便扩展,建议用NoSQL.非常适合海量数据分布式处理的.
如果能join的话呢? 比如商品表放在一个数据库,那用户关联商品,这个如何处理呢?
@LeeHavin_cnblog: 就你提到的这个得分三个业务模块,分别对应三个业务库.
用户库
订单库
产品库
用户登录后,能获取到当前的用户ID,用此ID去订单表找对应的商品ID,再用商品ID去找商品,要查三次才能查到.
但是,分库之后,是没法做到join查询的. select * from A join B ON A.ID=B.PID这种是查不到数据的.
如果你又要分库,又要join,那么只好将关键业务的表全放一个库里,如订单表,用户表,商品表.
然后将一些次要的业务表放另一库,如商品评论表,交易记录表等...
@hexllo: 若按照分库的话,那只能写WCF、webapi、webservice来取数据吗?群求其他的办法。
@LeeHavin_cnblog: 除了用webAPI来取,目前没想到更好的方法.
你的服务器在同一机房,用api来取也很快的,如果分布在全国各地,可以让这些服务器走VPN.
@hexllo: 能留下联系方式交流下吗?企鹅。
@LeeHavin_cnblog: 553030761
数据库一般有两种切法,纵向切和横向切。纵向是按业务切,横向是切单表,你这种切法类似于纵向切,注意业务分开,可以一试。
你是要做分布式,还是表拆分哦?把每个表都作为一个连接字符串的做法,比较不合理哇,是有点像纵向拆分。
比如商品关联表、用户关联表、订单关联表,分成三个数据库。这样也是无法join的。那如何去设计呢,难道用web api ,wcf这样去写接口吗?
@LeeHavin_cnblog: 这三个表为什么要拆分呢?看你的需求,直接按一定的规则(区域,时间等),分库即可。
@幻天芒: 不好意思,是用户系列表,商品系列的表。能在举个详细的例子吗?
@LeeHavin_cnblog: 一个地区一个库,这样每个库中表的数据就少了。
如果想通过RDBMS实现分布式数据库效果,按照业务纵向分库还算简单,如果横向分表,给每个拆分的表配置一个独立数据库连接串是可以的,而且这种数据库连接串通常还有一定的命名规律。
EF中是否可以实现呢?当然我也没这么试过,只是一个构思。把每个表都用数据库字符串连接,这个也有弊端,但是总是感觉这么异样。