当前位置: 网站首页>小程序开发>网站优化

启东400电话申请开通【启东企业网站建设】启东微信公众号小程序开发运营价格、启东微信公众号APP软件客户端设计运营、启东网页页面设计公司费用、启东公司网站制作方案流程改版维护大概需要多少钱

发表日期: 2021-04-26 10:25:08 浏览次数:102

启东400电话申请开通【启东企业网站建设】启东微信公众号小程序开发运营价格、启东微信公众号APP软件客户端设计运营、启东网页页面设计公司费用、启东公司网站制作方案流程改版维护大概需要多少钱


启东市,江苏省直辖,南通市代管,位于江苏省东南端,长江入海口北岸,是江苏省日出最早的地方。 [1]  户籍总人口110.35万,常住人口94.95万(2019年)。 [2]  截至2020年6月,启东市下辖9个镇。 [3] 

后周显德五年(958年),置海门县于东布洲,隶于通州,海门县域包括今启东中部、北部地区。民国十七年(1928年),于崇明外沙设启东县。1989年,撤销启东县,设立县级启东市。 [14]  [56] 

启东是全国对外开放口岸 [4]  、中国建筑之乡 [5]  、国家卫生城市 [6]  、国家园林城市 [7]  、全国文明城市 [8]  、国家级生态示范区 [9]  、节水型社会建设达标县 [10]  、紧密型县域医共体建设试点县 [11]  、革命文物保护利用片区分县 [12]  ,海洋经济之乡、电动工具之乡、建筑之乡、教育之乡、版画之乡。 [1] 

2019年,启东市地区生产总值1157.55亿元,第一产业增加值79.64亿元,第二产业增加值581.29亿元,第三产业增加值496.62亿元。三次产业比为6.9:50.2:42.9。人均地区生产总值121879元。

关联查询

对于关联查询,简单的关联可使用NotORM封装的方式,而复杂的关联,如多个表的关联查询,则可以使用PhalApi封装的接口。

如果是简单的关联查询,可以使用NotORM支持的写法,这样的好处在于我们使用了一致的开发,并且能让PhalApi框架保持分布式的操作方式。需要注意的是,关联的表仍然需要在同一个数据库。

以下是一个简单的示例。假设我们有这样的数据:

INSERT INTO `phalapi_user` VALUES ('1', 'wx_edebc', 'dogstar', '***', '4CHqOhe1', '1431790647', '');INSERT INTO `phalapi_user_session_0` VALUES ('1', '1', 'ABC', '', '0', '0', '0', null);复制代码

那么对应关联查询的代码如下面:

// SELECT expires_time, user.username, user.nickname FROM phalapi_user_session_0 // LEFT JOIN phalapi_user AS user // ON phalapi_user_session_0.user_id = user.id // WHERE (token = 'ABC') LIMIT 1$rs = DI()->notorm->user_session_0    ->select('expires_time, user.username, user.nickname')
    ->where('token', 'ABC')
    ->fetchRow();var_dump($rs);复制代码

会得到类似这样的输出:

array(3) {
  ["expires_time"]=>
  string(1) "0"
  ["username"]=>
  string(35) "wx_edebc"
  ["nickname"]=>
  string(10) "dogstar"}复制代码

这样,我们就可以实现关联查询的操作。按照NotORM官网的说法,则是:

If the dot notation is used for a column anywhere in the query ("$table.$column") then NotORM automatically creates left join to the referenced table. Even references across several tables are possible ("$table1.$table2.$column"). Referencing tables can be accessed by colon: $applications->select("COUNT(application_tag:tag_id)").

所以->select('expires_time, user.username, user.nickname')这一行调用将会NotORM自动产生关联操作,而ON的字段,则是这个字段关联你配置的表结构,外键默认为:表名_id 。

如果是复杂的关联查询,则是建议使用原生的SQL语句,但仍然可以保持很好的写法,如这样一个示例:

$sql = 'SELECT t.id, t.team_name, v.vote_num '
    . 'FROM phalapi_team AS t LEFT JOIN phalapi_vote AS v '
    . 'ON t.id = v.team_id '
    . 'ORDER BY v.vote_num DESC';$rows = $this->getORM()->queryAll($sql, array());var_dump($rows);复制代码

如前面所述,这里需要手动填写完整的表名,以及慎防SQL注入攻击。

其他数据库操作

有时,我们还需要进行一些其他的数据库操作,如创建表、删除表、添加表字段等。对于需要进行的数据库操作,而上面所介绍的方法未能满足时,可以使用更底层更通用的接口,即:NotORM_Result::query($query, $parameters)

例如,删除一张表。

DI()->notorm->user->query('DROP TABLE tbl_user', array());复制代码

2.5.6 分表分库策略

为了应对海量用户的产品愿景需求,PhalApi设计了一个分布式的数据库存储方案,以便能满足数据量的骤增、云服务的横向扩展、接口服务开发的兼容性,以及数据迁移等问题,避免日后因为全部数据都存放在单台服务器而导致的限制。

海量数据的分表策略

分表策略,即是通过可配置的路由规则,将海量的数据分散存储在多个数据库表。主要涉及的内容有:

  • 分库分表
    对于不需要进行必要关联查询的数据库表,进行分库分表存放。即对于同一张数据库表,若存放的数据量是可预见式的暴增,例如每时每刻都会产生大量的来自用户发布的事件信息,为了突破 数据库单表的限制以及其他问题,需要将此数据库表创建多个副本,并按照一定规则进行拆分存放。

  • 路由规则
    在进行了分库分表后,开发人员在对数据库表进行操作时,就需要根据相应的规则找到对应的数据库和数据库表,即需要有一个参考主键。这里建议每个表都需要有数值类型的主键字段,以便作为分表的参考。

  • 扩展字段
    在完成了分库分表和制定路由规则后,考虑到日后有新增表字段而导致数据库表结构的变更。为了减少数据库变更对现有数据库表的影响,这里建议每个表都增加text类型的extra_data字段,并且使用JSON格式进行序列化转换存储。

  • 可配置
    在有了多台数据库服务器以及每个表都拆分成多张表后,为减少后端接口开发人员的压力,有必须提供可配置的支持。即:数据库的变更不应影响开发人员现有的开发,也不需要开发人员作出代码层面的改动,只需要稍微配置一下即可。

  • 自动生成SQL语句
    对于相同表的建表语句,可以通过脚本来自动生成,然后直接导入数据即可,避免人工重复编辑维护SQL建表语句。

PhalApi框架主要提供了表名 + ID数据库服务器 + 数据库表之间的映射规则。

下面结合一个示例,讲解如何使用分表策略。假设我们有一个需要数据库分表的demo表,且各个表所映射的数据库实例如下。

c51c866ffa1ab3457f2021e8bbdbcc1.jpg

启东400电话申请开通启东企业网站建设启东微信公众号小程序开发运营价格、启东微信公众号APP软件客户端设计运营、启东网页页面设计公司费用、启东公司网站制作方案流程改版维护大概需要多少钱

400-111-6878
服务热线
顶部

备案号: 苏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