
发表日期: 2021-04-27 09:14:21 浏览次数:152
沛县400电话办理【沛县网站公司】沛县百度优化、沛县域名注册、沛县网店美工、沛县微信公众号托管
沛县,简称“沛”,因古有“沛泽”而得名,江苏省徐州市下辖县,位于徐州市西北部,处于苏、鲁两省交界之地,东靠微山湖,西邻丰县,南接铜山区,北接山东省鱼台,处于华北平原的东南边缘和淮海经济区的西北部位。总面积1806平方公里, [1-3] 总人口130万(2016年)。2019年,沛县完成地区生产总值777.96亿元,增长6.0%。 [4]
沛县水脉纵横,是滨湖之城、绿色之都,沛城东距中国北方最大的淡水湖—微山湖不足5公里,拥有62公里湖岸线、400平方公里湖面。 [2]
沛县历史悠久、资源富集,是江苏省和华东地区的煤炭主产地,探明煤储量24亿吨,年产原煤1200万吨,占全省70%。沛县是首批全国文明县城、全国科技进步先进县。荣获全国百强县、全国工业百强县、国家园林县城、国家知识产权强县工程试点县、中国最佳生态旅游县等称号。 [5]
2019年,沛县位居全国县域经济与县域综合发展第32位,综合实力百强县市第65位、全国科技创新百强县市第57位、经济竞争力百强第44位。 [6-7] 2020年7月29日,入选2017-2019周期国家卫生乡镇(县城)命名名单。 [8] 2020年8月,被授予2019年“四好农村路”省级示范县称号。 [9] 2020年12月,入选全国县域经济综合竞争力100强。
关系型数据库
NoSQL
远程系统
文件
下面分别进行说明。
绝大部分的系统都会使用到关系型数据库,例如MySQL、Microsoft SQL Servcer、Oracle、SQLite、PostgreSQL等。在使用数据库构建大型系统时,有以下几个方面需要注意的。
在我职业生涯中,不止一次看到公司因需要进行数据库迁移而大动干戈,小则在夜深人静,用户酣睡时进行迁移操作,大则在迁移前进行动员大会、模拟演练、发布停站升级公告,然后暂停各大系统之间的通讯并按计划严谨进行迁移,连每一个时间点哪个人需要做什么都要细无巨细进行统筹。需要迁移的一个很大原因是,受限于单台服务器的硬盘空间以及数据库本身的存储限制,不能满足业务系统日益膨胀的数据规模。
当然,我也曾非常有幸,在任职过的一家游戏公司中,了解并实践了水平分库分表这一思想。这不仅隔离了数据上的风险,还为可预见的海量数据打下了坚实的基础。因此,在设计之初就避免了日后迁移的维护成本。
需要注意的是,对于数据量大的表,应该考虑分表存储,而不是一定要使用分表存储。进行分表存储一个很大的缺点就是,难以进行数据库表之间的关联查询。如果考虑使用分表策略,那么此数据库表是否不需要关联查询,或者说可以通过其他方式弥补这一点?这些都是需要权衡的点。
在PhalApi进行分表存储时,其实现方式很简单,主要分别:配置、实现和使用这三步。
分表配置 首先,在数据库配置文件Config/dbs.php中进行分表的配置。
分表实现 其次,在Model实现子类中,重载获取表名方法实现分表的方式。
分表使用 最后,便可以使用分表存储了。
让我们通过User扩展类库中的用户会话分表,再来回顾一下这三个步骤。首先,分表配置主要是通过map选项来指定,如下所示,对于用户会话表phalapi_user_session,共分了10张表,分别是:phalapi_user_session_0、phalapi_user_session_1、……、phalapi_user_session_9,以及默认缺省表phalapi_user_session。
return array(
'tables' => array(
'user_session' => array(
'prefix' => 'phalapi_',
'key' => 'id',
'map' => array(
array('db' => 'db_demo'),
array('start' => 0, 'end' => 9, 'db' => 'db_demo'),
),
),
));复制代码其次,在Model实现子类中,重载PhalApi_Model_NotORM::getTableName($id)方法,指定分表名称。通常做法是,根据参照ID进行求余,然后将余数作为分表的后缀标识。
class Model_User_UserSession extends PhalApi_Model_NotORM {
const TABLE_NUM = 10;
protected function getTableName($id) {
$tableName = 'user_session';
if ($id !== null) {
$tableName .= '_' . ($id % self::TABLE_NUM);
}
return $tableName;
}
... ...复制代码最后,便可使用分表存储了。使用的方式又可以分为两大类,当使用全局的访问方式时,可直接手动指定分表名称,如:
// 使用phalapi_user_session_0分表$session0 = DI()->notorm->user_session_0;// 使用phalapi_user_session_1分表$session1 = DI()->notorm->user_session_1;// ... ....// 使用phalapi_user_session_9分表$session9 = DI()->notorm->user_session_9;复制代码
若是直接使用原生SQL拼接时,则还需要手动加上表前缀,例如:
$sql = 'SELECT count(*) as num FROM phalapi_user_session_0';复制代码
当使用局部的访问方式时,对于基本的已封装的CURD操作,可以通过参数ID指定对应的分表,例如:
$model = new Model_User_UserSession();// 查询phalapi_user_session_0分表$row = model->get(10);// 查询phalapi_user_session_1分表$row = model->get(1);// ... ....// 查询phalapi_user_session_9分表$rsow = model->get(9);复制代码
若是在Model实现子类内部时,则可以使用PhalApi_Model_NotORM::getORM($id)方法,传入参数ID并获取对应的分表实例。例如:
class Model_User_UserSession extends PhalApi_Model_NotORM {
public function doSth() {
// 获取phalapi_user_session_1分表实例
$session1 = $this->getORM(1);
}}复制代码因此在使用时,可根据业务的需要,自行选择合适的方式。值得注意的是,当没有对应的分表时,将会回退使用默认的主表。
在大型系统中,应对高并发访问的一个行之有效的方案是使用高效缓存来提高系统的响应时间与高可用性。适合使用缓存的场景可以有:
幂等查询
允许一定的延时
计算成本高或耗时的操作结果
对于大型项目中复杂的数据查询,PhalApi提供了一种经验作法。以下这个示例很好地演示了如何使用此经验做法。
首先,实现PhalApi_ModelProxy接口,并实现具体的源数据获取的过程,并指定缓存的键值和缓存时间。
class ModelProxy_UserBaseInfo extends PhalApi_ModelProxy {
protected function doGetData($query) {
$model = new Model_User();
return $model->getByUserId($query->id);
}
protected function getKey($query) {
return 'userbaseinfo_' . $query->id;
}
protected function getExpire($query) {
return 600;
}}复制代码随后,通过查询值对象,获取相应的数据。
class Domain_User {
public function getBaseInfo($userId) {
$rs = array();
$query = new PhalApi_ModelQuery();
$query->id = $userId;
$modelProxy = new ModelProxy_UserBaseInfo();
$rs = $modelProxy->getData($query);
return $rs;
}}复制代码这样,一来可以把每个数据单独实现在职责单一的代理类中,二来可以避免重复对缓存的公共操作。

服务热线
顶部
备案号: 苏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