BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #35386同步于 2009/8/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

C_S中sql语句执行问题

youziboy
2009/8/12镜像同步9 回复
一个C/S架构+MySQL系统,MySQL放在服务端。客户端和服务端之间使用TCP协议。 是不是应该这样设计啊? 定义好客户端发到服务端的数据格式。 比如:struct SendData{ char* ptrSQL;//客户端要执行的sql语句 int iLen; //客户端发送数据的长度 } 然后服务端接收到包后,执行结构体中的ptrSQL语句,然后得到结果,再传回客户端。 我认为:是不是相当于客户端只是发送sql的语句给服务端,服务器中进行sql语句的执行。那么这样的话,客户端机器上不需要做任何和数据库相关的配置吧? 是这样设计么?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Keyman机器人#1 · 2009/8/12
dragon2000机器人#2 · 2009/8/13
如果是C/S架构,一般应该是在Client安装MySQL的客户端软件,然后程序直接调用MySQL的API来执行SQL语句就行了。自己定义一个Client到Server的数据包格式是多此一举。
youziboy机器人#3 · 2009/8/13
这样的话,是不是安全性会降低啊? 如果客户端拿到了数据库管理员的密码,就可以直接在客户端进行数据库操作了吧。。
dragon2000机器人#4 · 2009/8/14
您不会设MySQL的管理员帐号只允许localhost登录的吗? 数据库权限管理本身就有一大堆功能,先学会了才能谈安全性的问题啊。
reeze机器人#5 · 2009/8/15
为什么要让客户端执行sql。根据需求暴露接口就好了。传sql。。那服务器不成了一个数据库了。。。那你所谓的服务端有什么好做的。、
dragon2000机器人#6 · 2009/8/15
C/S架构一向就是这样啊,以前很常见的就是Server端装一个数据库,Client端用PowerBuilder做一个应用程序。Server端要做什么?就是这个应用数据库的设计呗。难道非要自己开发一套TCP通信程序才叫做有事可做吗? 还有,您怎么知道MySQL客户端的安全性比不上您自己开发的TCP通信程序? 您要传SQL,中间传输准备用什么加密和认证的方法?您的程序考虑怎样抵御SQL注入攻击、数据重传攻击、中间人攻击、网络窃听、数据篡改、身份伪造?MySQL的客户端已经有这么多年的历史,至少这些方面做得比较完善吧。您的程序刚做出来会有多少漏洞,有没有预计过?打算怎样测试,有准备好了吗? 【 在 reeze 的大作中提到: 】 : 为什么要让客户端执行sql。根据需求暴露接口就好了。传sql。。那服务器不成了一个数据库了。。。那你所谓的服务端有什么好做的。、
dragon2000机器人#7 · 2009/8/15
谁要觉得C/S的server端没什么好做的,最好可以有机会去设计一下银行或电信的业务数据库。几百张表,各种数据关联和约束关系,事务处理的方案,触发器的设计,各种帐号和权限的配置,索引的使用,查询优化,多级备份的策略和恢复机制,性能监控,存储容量的增长预测和扩容规划……哦没错,人家只是装了个数据库而已。
uriel机器人#8 · 2009/8/24
其实即使是外层应用调用核心银行的数据库我们也是禁止直接写sql语句的... 所以如果对安全要求较高,即使是c/s系统,最好也还是提供封装的接口给客户端用,具体为什么以前安全培训时有听过,不过忘记了。。。(说到这动态sql也是禁止使用的) 当然小型个人系统客户端装个数据库客户端更方便 【 在 dragon2000 的大作中提到: 】 : 谁要觉得C/S的server端没什么好做的,最好可以有机会去设计一下银行或电信的业务数据库。几百张表,各种数据关联和约束关系,事务处理的方案,触发器的设计,各种帐号和权限的配置,索引的使用,查询优化,多级备份的策略和恢复机制,性能监控,存储容量的增长预测和扩容规划……哦没错,人家只是装了个数据库而已。
dragon2000机器人#9 · 2009/8/24
用存储过程或者中间件。中间件不用自己开发,存储过程可能是由自己设计。 【 在 uriel 的大作中提到: 】 : 其实即使是外层应用调用核心银行的数据库我们也是禁止直接写sql语句的... : 所以如果对安全要求较高,即使是c/s系统,最好也还是提供封装的接口给客户端用,具体为什么以前安全培训时有听过,不过忘记了。。。(说到这动态sql也是禁止使用的) : 当然小型个人系统客户端装个数据库客户端更方便