
发表日期: 2021-04-26 17:18:43 浏览次数:110
如东网站制作要多少钱【域名企业邮箱服务器注册申请办理】如东网络优化公司哪家好、如东软件开发外包价格、如东高端企业网站页面制作设计专业公司、如东微信公众号小程序购物支付搭建制作公司
如东县,江苏省南通市下辖县 [1] ,位于江苏省东南部、长江三角洲北翼。县境南与通州区为邻,西与如皋市接壤,西北与海安市毗连,东面和北面濒临黄海。截至2020年末,全县下辖3个街道、12个乡镇 [2] ,陆域面积1872平方千米,海域面积4758平方千米 [3] ,常住人口97.71万人,实现地区生产总值1053.42亿元 [4] 。
如东是江海盐垦文化的代表。秦汉以前县境为长江口沙洲,故称扶海洲。长江、黄淮冲积成陆后,如东盐业兴起,亭场林立,至明清繁盛一时。民国之后,沿海逐步废灶兴垦,现代农渔业得到发展。 [5] 1988年对外开放后,如东沿海进一步开发,建成南黄海优良深水港口洋口港。 [6]
2019年7月,被列为国家知识产权强县工程示范县(区) [7] 。2019年10月8日,被评为2019年度全国综合实力百强县市、2019年度全国投资潜力百强县市、2019年度全国绿色发展百强县市、2019全国营商环境百强县 [8-9] 。2020年7月29日,入选2019年重新确认国家卫生乡镇(县城)名单。 [10] 2020年12月,社科院百强县榜单中如东排名第45 [11] 。
Family 2.0 项目的数据库名为:familyv2,并约定统一的表前缀为“fami”。考虑到Family 2.0 项目数据量大,为方便后期的数据库服务器水平扩容,我们对数据量大且不需要进行关联查询的表进行了分表配置。例如,对于动态的评论内容,其评论表fami_feed_comments数据量大,只需要与动态关联,而评论与评论间不需要进行关联查询,因此适合采用分表策略。此时,首先配置的是数据表路由规则。
// $ vim ./Config/dbs.php
'tables' => array(
... ...
// 评论表 - 100张分表
'feed_comments' => array(
'prefix' => 'fami_',
'key' => 'id',
'map' => array(
array('db' => 'db_A'),
array('start' => 0, 'end' => 99, 'db' => 'db_A'),
),
),
),复制代码虽然目前100张分表都使用了db_A这一数据库实例,但通过这种配置,可以在需要的时候进行相应的调整。
接下来,准备存放评论表的基本字段的sql文件。注意不需要添加主键id和扩展数据ext_data这两个字段。即:
-- $ vim ./Data/feed_comments.sql `feed_id` bigint(20) DEFAULT '0', `user_id` bigint(20) DEFAULT '0' COMMENT '发布评论的用户ID', `message` text COMMENT '评论内容', `to_comment_id` bigint(20) DEFAULT '0' COMMENT '针对评论的回复,为0时表示对动态>评论', `to_user_id` bigint(20) DEFAULT '0' COMMENT '被评论者的用户id', `dateline` int(11) DEFAULT '0' COMMENT '评论的时间戳',复制代码
随后,可以使用phalapi-buildsql脚本命令为此评论表生成创建这100个分表的SQL语句,执行此命令,传递相应的参数,以及生成输出的SQL语句为:
$ Family-2.0$ ./PhalApi/phalapi-buildsqls ./Config/dbs.php feed_comments CREATE TABLE `fami_feed_comments_0` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `feed_id` bigint(20) DEFAULT '0', `user_id` bigint(20) DEFAULT '0' COMMENT '发布评论的用户ID', `message` text COMMENT '评论内容', `to_comment_id` bigint(20) DEFAULT '0' COMMENT '针对评论的回复,为0时表示对动态评论', `to_user_id` bigint(20) DEFAULT '0' COMMENT '被评论者的用户id', `dateline` int(11) DEFAULT '0' COMMENT '评论的时间戳', `ext_data` text COMMENT 'json data here', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `fami_feed_comments_1` ... ...CREATE TABLE `fami_feed_comments_2` ... ...CREATE TABLE `fami_feed_comments_3` ... ... .. ...CREATE TABLE `fami_feed_comments_99` ... ...复制代码
检验没问题后,可重定向保存到临时文件,如/tmp/fami_feed_comments.sql,再导入到数据库。
完成配置和创建好数据库分表后,接下就是评论数据模型Model类的实现。
// Family-2.0$ vim ./Apps/Fami/Model/FeedComments.php <?phpclass Model_FeedComments extends PhalApi_Model_NotORM {
const TABLE_NUM = 100;
protected function getTableName($id = null) {
$tableName = 'feed_comments';
if ($id !== null) {
$tableName .= '_' . ($id % self::TABLE_NUM);
}
return $tableName;
}}复制代码其他需要使用分表的情况也可以类似这样配置和实现。在项目初期,就确定好哪些数据库表需要分表是大有裨益的。程序是数据结构加算法,可想而知,数据在系统项目中所处的重要位置。有什么样的数据结构,就决定了怎样的算法。同样,有什么的存储方式,就影响了如何编写程序的代码。
下面是评论领域业务类的相关代码片段,这些代码展示了在分表的情况下,如何编写代码。
// Family-2.0$ vim ./Apps/Fami/Domain/Feed/Comment.php
/**
* 分表存储 + 刷新评论数量
*/
protected function commonComment($newData) {
$model = new Model_FeedComments();
$id = $model->insert($newData, $newData['feed_id']);
//刷新评论数量
$domain = new Domain_Feed();
$domain->refreshCommentNum($newData['feed_id']);
return intval($id);
}复制代码细心的读者可以发现,在调用insert方法进行添加数据时,会添加第二个参数$newData['feed_id']。此参数表示是动态ID字段,用于进行分表的依据。并且注意到在为动态添加评论内容后,需要刷新动态的评论总数量,以便缓存耗时但每次查询结果都一样的值。

如东网站制作要多少钱【域名企业邮箱服务器注册申请办理】如东网络优化公司哪家好、如东软件开发外包价格、如东高端企业网站页面制作设计专业公司、如东微信公众号小程序购物支付搭建制作公司
服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878