我们公司商品库数据来自于京东和苏宁。对方提供接口给我们去拉数据 示意图如下我们公司商品库表结构为
CREATE TABLE `goodsku` (
`id` int(10) NOT NULL COMMENT '自动增长id序列',
`goods_type` tinyint(1) DEFAULT NULL COMMENT '商品来源类型 1表示京东 2表示苏宁',
`goods_id` int(10) DEFAULT NULL COMMENT '商品源库id',
`goods_price` decimal(10,2) DEFAULT NULL COMMENT '商品价格',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;现在问题是,我们公司同时开展3个购物网站,分别为 www.a1.com www.a2.com www.a3.com
要求三个网站实现商品数据隔离,意思是商品数据修改互不影响,那么我很自然的想到的是 为每个网站都建立自己的商品表,表结构和goodsku一致。现在已知goodsku有1200万记录,要实现把这些数据导入到三个网站的商品表里面去 这个导入程序首先肯定是一种异步定时任务操作
为了效率起见,我们必须保证自己的导入程序每次处理不重复。我为这个表增加一个是否已导入的字段 表看起来是这样
CREATE TABLE `goodsku` (
`id` int(10) NOT NULL COMMENT '自动增长id序列',
`goods_type` tinyint(1) DEFAULT NULL COMMENT '商品来源类型 1表示京东 2表示苏宁',
`goods_id` int(10) DEFAULT NULL COMMENT '商品源库id',
`goods_price` decimal(10,2) DEFAULT NULL COMMENT '商品价格',
`is_import_a1` tinyint(1) DEFAULT NULL COMMENT '是否已导入a1商城 1表示已经导入了 0表示未导入',
`is_import_a2` tinyint(1) DEFAULT NULL COMMENT '是否已导入a1商城 2表示已经导入了 0表示未导入',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;在看我的处理程序 我这里用伪代码实现
public function goodsimport(){
// 先从公司商品库里面抓取商品记录 我每次处理200条
// 先往网站1里面商品表插入jil
$goods_list = M('goodsku')->where('is_import_a1=0')->limit(200);
foreach ($goods_list as $goods){
// goodskua1表为网站1 www.a1.com的商品表名称
M('goodskua1')->data($goods)->add();
} // 同样的代码逻辑导入到www.a2,com // TO DO
}这个处理程序我用定时任务去驱动。放在后台运行 是实现了我上述需求。。现在本人有点疑问。
就是假如我再来一个商城 我难道又在goodsku表加一个类似于is_import_an 的字段吗,想问下各位大哥有没有什么更好的设计方案满足我上述需求。
CREATE TABLE `goodsku` (
`id` int(10) NOT NULL COMMENT '自动增长id序列',
`goods_type` tinyint(1) DEFAULT NULL COMMENT '商品来源类型 1表示京东 2表示苏宁',
`goods_id` int(10) DEFAULT NULL COMMENT '商品源库id',
`goods_price` decimal(10,2) DEFAULT NULL COMMENT '商品价格',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;现在问题是,我们公司同时开展3个购物网站,分别为 www.a1.com www.a2.com www.a3.com
要求三个网站实现商品数据隔离,意思是商品数据修改互不影响,那么我很自然的想到的是 为每个网站都建立自己的商品表,表结构和goodsku一致。现在已知goodsku有1200万记录,要实现把这些数据导入到三个网站的商品表里面去 这个导入程序首先肯定是一种异步定时任务操作
为了效率起见,我们必须保证自己的导入程序每次处理不重复。我为这个表增加一个是否已导入的字段 表看起来是这样
CREATE TABLE `goodsku` (
`id` int(10) NOT NULL COMMENT '自动增长id序列',
`goods_type` tinyint(1) DEFAULT NULL COMMENT '商品来源类型 1表示京东 2表示苏宁',
`goods_id` int(10) DEFAULT NULL COMMENT '商品源库id',
`goods_price` decimal(10,2) DEFAULT NULL COMMENT '商品价格',
`is_import_a1` tinyint(1) DEFAULT NULL COMMENT '是否已导入a1商城 1表示已经导入了 0表示未导入',
`is_import_a2` tinyint(1) DEFAULT NULL COMMENT '是否已导入a1商城 2表示已经导入了 0表示未导入',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;在看我的处理程序 我这里用伪代码实现
public function goodsimport(){
// 先从公司商品库里面抓取商品记录 我每次处理200条
// 先往网站1里面商品表插入jil
$goods_list = M('goodsku')->where('is_import_a1=0')->limit(200);
foreach ($goods_list as $goods){
// goodskua1表为网站1 www.a1.com的商品表名称
M('goodskua1')->data($goods)->add();
} // 同样的代码逻辑导入到www.a2,com // TO DO
}这个处理程序我用定时任务去驱动。放在后台运行 是实现了我上述需求。。现在本人有点疑问。
就是假如我再来一个商城 我难道又在goodsku表加一个类似于is_import_an 的字段吗,想问下各位大哥有没有什么更好的设计方案满足我上述需求。
解决方案 »
- php淘宝Open 平台 api 一月+ 感慨.
- 全国性的大站怎么搞?有经验的交流下
- smarty批量生成静态页面讨论
- 关联菜单
- ip比较问题,SELECT出来不只一条记录,大家看看。
- 深圳市万兴软件有限公司(PHP程序员1人)
- php无法获取GET和POST发送的变量??
- 如何去除浏览器的“滚动条”?
- 哪里有在线电影系统的源程序下载
- 这个问题很难吗??http://expert.csdn.net/Expert/topic/1217/1217471.xml?temp=.5703241
- 求助!!php读取mdb文件出错,Fatal error: in E:。。。。。。
- 用post传递数据给php文件,PHP 总undefined
这样如果再多个网站,你就只用复制一个goodsku表过去就行,不用改goodsku的结构或数据。
2.goodsku表中应该有个入库时间字段,比如addtime,数据导入到各分表的时候,addtime也要在各分表中更新;下次导入数据时,从各分表中取出最大的addtime,从goodsku查询addtime大于各分表最大时间的数据导入(同时根据关联id判断是需要update还是insert,或者直接先delete再insert)