PowerDotNet平台化软件架构设计与实现系列(07):数据同步平台
摘要:上文介绍定时任务调度平台的时候提到,定时任务调度平台的类模式一般用于处理耗时较长的任务。但是根据经验,有些耗时较长的任务,可以通过简化业务逻辑、分页、批量多次处理,改造为耗时较小的适合使用RESTful接口模式的定时任务。有一类数据同步结转非常耗时的任务,耗时多少完全看数据量,这类数据处理任务的解决
阅读全文
posted @
2021-12-20 11:02
JeffWong
阅读(931)
推荐(1) 编辑
PowerDotNet平台化软件架构设计与实现系列(05):ETCD分布式键值存储平台
摘要:ETCD目前在PowerDotNet已经被用于注册中心和配置管理(常见的配置中心在PowerDotNet中仅仅是一个小小的模块而已)中,作为基础设施的重要组成部分,ETCD的重要性不言而喻。 本文简单总结介绍下个人开发使用和管理ETCD的一些经验。 ETCD诞生于CoreOS公司,它最初是用于解决集
阅读全文
posted @
2021-12-02 22:03
JeffWong
阅读(802)
推荐(2) 编辑
PowerDotNet平台化软件架构设计与实现系列(03):系统应用平台
摘要:为了复用和解耦,快速开发更多的系统和应用,我们对自己经常说的“系统”和“应用”进行更高级的提取和抽象。 十多年前入行,辗转至今,写过很多很多应用,个人喜欢分门别类整理知识,也看到有些公司这样管理应用(照猫画虎还是挺容易的),所以有个趁手的系统应用管理平台就是顺理成章的事情。现在PowerDotNet
阅读全文
posted @
2021-11-16 21:21
JeffWong
阅读(1034)
推荐(3) 编辑
PowerDotNet平台化软件架构设计与实现系列(02):数据库管理平台
摘要:为了DB复用和简化管理,我们对常见应用依赖的DB模块进行更高级的提取和抽象。 虽然一些ORM可以简化DB开发,但是我们还是需要进行改进和优化,否则应用越多,后期管理运维越混乱。 根据常见开发需要,数据库连接串、数据库元数据管理基本上是合格的开发人员必须要用到的功能。 一、数据库连接 数据库连接串管理
阅读全文
posted @
2021-10-12 12:55
JeffWong
阅读(1665)
推荐(7) 编辑
业务系统数据库设计常见的隔离和共享模式
摘要:多年开发和维护某些业务系统的经验,让人真正理解了什么叫“数据库设计良好,系统就成功了一半”,尤其是那些面向多商户或多租户的基础服务平台、公共服务平台、开放服务平台、或者由它们组合而成的综合服务平台。数据库设计之初,必须对业务系统DB的隔离和共享模式的优缺有充分的调研,平衡好业务系统的边界,合理设计使
阅读全文
posted @
2014-11-22 20:22
JeffWong
阅读(5784)
推荐(6) 编辑
浅析SQL Server实现分布式事务的两阶段提交协议2PC
摘要:不久之前团队有个新人问我一个很重要的web服务接口如何保证事务的问题。因为涉及到跨库事务,当时我只是回答目前我们的SOA框架都不支持跨库事务。然后就问到了数据库跨库事务是如何实现的,我只能凭印象含糊回答多数是基于数据库日志(后来知道就是所谓的预写日志Write-Ahead Logging),具体数据库内部如何控制数据一致性则真的说不清楚。后来一起查了一下事务的资料,原来DB的事务控制除了基于预写日志还要实现两阶段提交协议(2PC),参考MSDN摘抄两段加深印象。一、2PC的两个阶段1、准备阶段(Prepare Phase)When the transaction manager receive
阅读全文
posted @
2014-01-13 23:26
JeffWong
阅读(4070)
推荐(1) 编辑
对MySql查询缓存及SQL Server过程缓存的理解及总结
摘要:一、MySql的Query Cache1、Query CacheMySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集。MySql在实现Query Cache的具体技术细节上类似典型的KV存储,就是将SELECT语句和该查询语句的结果集做了一个HASH映射并保存在一定的内存区域中。当客户端发起SQL查询时,Query Cache的查找逻辑是,先对SQL进行相应的权限验证,接着就通过Query Cache来查找结果。它不需要经过Optimizer模块进行执行计划的分析优化,更不需要发生同任何存储引擎的交互,减少了大量的磁盘IO和CPU运算,所以有时候效率非常高
阅读全文
posted @
2013-08-03 21:21
JeffWong
阅读(3629)
推荐(4) 编辑
也做SQL查询:班级总成绩 前三名,总成绩有相等的情况
摘要:刚刚看到一篇博客,原帖链接:http://www.cnblogs.com/HCCZX/archive/2012/11/07/2758036.html通常想到子查询或者临时表外加聚合函数都是没错的,但是真写起来发现SQL语句比较不那么人道,阅读体验不好。追求优雅的Coder通常一看到是SQL Server 2005+,条件反射地想到窗口函数和公用表表达式CTE。一种SQL查询实现如下:WITH ScoreInfo AS (SELECT [Student_No], [Student_Name],[Chinese],[Math],[English],[totalScore] ,DENSE_...
阅读全文
posted @
2012-11-07 21:47
JeffWong
阅读(3218)
推荐(1) 编辑
【数据库设计】“Max加一”生成主键的注意点
摘要:Sql Server数据库的主键设计有多种,比如经典的自增长,欢乐的guid,按照时间生成id(有通过程序生成的方式,还有一种也是通过数据库时间和随机数生成),按照业务模型组合生成有意义的id等等。最近项目中接触到一种模拟自增长自动编号主键的方式,即“Max加一”。Max加一的原理看上去和自增长是相似的,表的唯一主键也设计成数字型(如bigint)的,只是把自动增长去掉了(表设计器标识规范一栏,“是标识”的选项选择否即可)。在Insert记录的时候,通常情况下的流程大致是这样的:读取当前表的Max主键值后加一,然后按照传递的相关参数,显式插入主键及其他列的值。这种生成主键方式的一个最显著的优点
阅读全文
posted @
2011-07-09 22:55
JeffWong
阅读(3376)
推荐(3) 编辑
总结SQL Server窗口函数的简单使用
摘要:前言:我一直十分喜欢使用SQL Server2005/2008的窗口函数,排名函数ROW_NUMBER()尤甚。今天晚上我在查看SQL Server开发的相关文档,整理收藏夹发现了两篇收藏已久的好文,后知后觉,读后又有点收获,顺便再总结一下。一、从一个熟悉的示例说起我们熟知的数据库分页查询,以这一篇介绍过的为例吧。分页查询Person表中的人,可以这么写SQL语句:其中,ROW_NUMBER()是排名函数,而紧随其后的 OVER()函数就是窗口函数。你还在用二次top方式的分页查询吗?可以考虑尝试使用排名函数配合CTE实现分页。二、窗口函数本文介绍窗口函数,以下面的学生成绩表为例:其中,Id是
阅读全文
posted @
2010-12-04 23:50
JeffWong
阅读(15175)
推荐(4) 编辑
动态SQL开发基础和经验再总结
摘要:写SQL容易,但难精通。注:本文示例Person表结构请参考拙文的数据表介绍。一、SQL语句直接处理非数字型列的“累加”问题查询要求:取出Person表中所有人的FirstName,并以逗号隔开。可直接通过SELECT @local_variable = expression的形式实现:我们还有一种比较笨拙的方式进行查询,那就是通过游标:大部分SQL查询我们都会力争不用游标...
阅读全文
posted @
2010-12-04 17:38
JeffWong
阅读(1822)
推荐(2) 编辑
sql复制表定义及复制数据行
摘要:一、复制表定义假设我们有一个数据表Person,有Id,FirstName,LastName,Weight,Height5个列,表结构可以参考这一篇。现在我们想创建一个新表叫People,表结构和Person一模一样,也就是列名和数据类型都一致。我们可以通过复制Person表的结构而不是复制表中的记录来创建这个表,贴一下sql代码:1、Sql Serversql server使用带有不返回任何行的...
阅读全文
posted @
2010-11-14 21:36
JeffWong
阅读(38838)
推荐(5) 编辑
“无限极”分类数据表设计的简单再总结
摘要:前言:项目中又要用到一个四级分类数据表,之前我曾经在这方面按步就班玩过不少CRUD的操作,感觉工作内容有不少重复,有必要再总结一下,对新手可能会有点帮助,同时以备自己日后再用。1、数据表设计开门见山,Category表设计如下:数据表字段简单说明:列名数据类型默认值备注Idint自增主键Namevarchar(256)分类类别名称ParentIdint0父母分类IdDepthint1深度,从1递增...
阅读全文
posted @
2010-10-26 21:12
JeffWong
阅读(29344)
推荐(8) 编辑
简单记录几个有用的sql查询
摘要:下面示例中,查询的数据表参考这一篇的Person表。 一、限制返回的行数 1、Sql Server SELECT TOP 10 Id,FirstName, LastName FROM Person 2、Oracle SELECT Id,FirstName, LastName FROM Person
阅读全文
posted @
2010-10-17 17:10
JeffWong
阅读(1698)
推荐(2) 编辑
sql server:删除表数据,标识列Id从1开始
摘要:今天是元宵节,楼猪认为在这么热闹和喜庆的日子里,不写上一篇惊世骇俗的大作,嗯,也没什么大不了的。在sql server数据库上创建有自增列的数据表,每次删除表的数据后,自增主键都无法自动从1开始计数。用下面三个单词就可以轻松搞定:[代码]果然惊世骇俗。祝大家元宵快乐。
阅读全文
posted @
2010-02-28 16:01
JeffWong
阅读(4504)
推荐(1) 编辑
sql查询,nolock写还是不写,这是一个问题
摘要:在做过的很多项目中,发现大家不管对什么表,逢select必定加上nolock(或者with(nolock)),好像已经是制度化的一种东西。有领导高人解释说加上nolock可以提高查询速度,不影响对数据表的其他并发操作。 但是真有必要每个查询都加nolock吗?个人认为加不加nolock还是值得我们根
阅读全文
posted @
2010-01-21 19:08
JeffWong
阅读(2267)
推荐(3) 编辑
利用sql server直接创建日历
摘要:看到网上有高手直接用sql查询创建日历,也想自己动手实践一遍。笔者这里的实现和网上的都没有什么区别,思路也没有什么新意。觉得好玩,就把它记下来吧。 一、准备知识1、sql的with关键字关于with和公用表表达式(CTE),可以参考SQL Server 2005新特性之使用with关键字解决递归父子关系和Sql Server2005 Transact-SQL 新兵器学习总结之-公用表表达式(CTE...
阅读全文
posted @
2009-11-04 22:51
JeffWong
阅读(2473)
推荐(0) 编辑
分享dbms的好助手:sql助手(Sql Assistant)
摘要:重装了sql 2005,发现management studio没有了智能提示,网上搜了一个插件。安装并试用了一下,功能果然很强大,最重要的是很好用,很符合操作习惯。和大家分享一下。下载链接:Sql Assitant
阅读全文
posted @
2009-08-07 17:49
JeffWong
阅读(1432)
推荐(0) 编辑
sql的临时表使用小结
摘要:1、创建方法:方法一:create table TempTableName或select [字段1,字段2,...,] into TempTableName from table 方法二:create table tempdb.MyTempTable(Tid int)说明:(1)、临时表其实是放在数据库tempdb里的一个用户表;(2)、TempTableName必须带“#”...
阅读全文
posted @
2009-08-05 20:34
JeffWong
阅读(46158)
推荐(3) 编辑
sql利用视图实现一个数值型字段的求和问题
摘要:有如下简单需求:客户购买产品,厂商想看到收入和欠费统计。已存在的数据库主要表结构:客户表(Customer)和销售记录表(SoldRecord),另外相关表(如产品表Product)在此略过。1、客户表这个表很简单:字段说明:[代码]2、销售记录表字段说明:[代码]客户需求分析:“厂商想看到收入和欠费统计”,分析上述表结构,可以看到问题的由来就出在这个表的paidmoney...
阅读全文
posted @
2009-06-28 10:49
JeffWong
阅读(4365)
推荐(0) 编辑