`
achun
  • 浏览: 311829 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

我的WEB设计契约--数据库篇之PostgreSQL特例

阅读更多

上文我的WEB设计契约--数据库篇 是一个通用的契约,如果用PostgreSQL数据库引擎的话,情况会变的更好玩.

PostgreSQL数据库的SQL语句有一个特性.

如果在SQL语句中的表名,字段名没用双引号包裹 的话,表名,字段名会自动转换为小写 .

这个特性可以对上文的契约进行一些优化,在书写代码和配置文件的时候会方便很多.

可以把契约改成

  1. 关联数组的key表示字段,value表示相关参数
  2. key小写 为SELECT/UPDATE的WHERE条件
  3. key大写 为INSERT的field值对定义
  4. key混写 为UPDATE的 field值对定义
  5. key=='*'为SELECT语句返回的字段
  6. key=='@'为扩展的SQL语句,如limit,order等,当然里面还有细节的设计

从提交的数据来分析到底要执行select/update/insert并不难(insert语句一般是没有where的),但是这个契约对写配置有什么方便的呢?

当提交数据后,不管到底要执行那种操作,后台总要对数据进行校验和约束,先不说校验,先说约束,比如

  1. 限制select的返回字段,也就是key=='*'的情况,需要定义返回字段限制scope=array('id','name')
  2. 限制update字段,也就是key混写 的情况,需要定义字段限制scope=array('Name')
  3. 限制insert字段,也就是key大写 的情况,需要定义字段限制scope=array('NAME'),id一般是自动的了

那其实上面三个请求可以把scope写到一起array('id','name','Name','NAME')

编写程序提取要返回的字段/updat的字段/insert的字段,然后和scope进行数组的运算,求交集/差集(或者直接判断是否相关值是否存在于scope数组中),判断就可以知道输入数据是否合法了,而生成的SQL语句无需考虑大小写问题.代码可以简化很多.
这种契约的意义呢!
一切都逻辑化了,库化了,
配置化了,通过配置来完成网站建设成为可能.常规后台数据编程低代码成为可能.
想想Google App Engine的复杂程度,再看看如果按照这种契约,对特定应用书写特殊的接口,在大多数应用中后台程序员可以"失业"了.再想想这算框架么?把上述契约代码化后,也没有几K,基于数据契约的框架,我觉得不能称为框架.基于此契约针对特定应用,完善各种特殊接口才能称为框架.

ps:
这是一种小技巧,我的出发点,用最低的代码成本,结构成本来完成常规需求

1
0
分享到:
评论

相关推荐

    2024-01-18-【数据库】 PostgreSQL中的VACUUM作用.md

    2024-01-18-【数据库】 PostgreSQL中的VACUUM作用

    PostgreSQL(postgresql-13.5-1-osx.dmg)

    PostgreSQL(postgresql-13.5-1-osx.dmg)适用于Mac OS X PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库...

    postgresql-10.12-1-windows-x64.exe

    PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现...

    postgresql-42.2.2.jar+postgresql-9.2-1003.jdbc4.jar

    标题中提到的"postgresql-42.2.2.jar"和"postgresql-9.2-1003.jdbc4.jar"是与PostgreSQL相关的Java档案(JAR)文件,它们在Java应用程序中用于与PostgreSQL数据库进行交互。 首先,"postgresql-42.2.2.jar"是...

    postgresql-13.3-2-windows-x64 windows安装器

    postgresql-13.3-2-windows-x64 windows安装器 postgresql-13.3-2-windows-x64 windows安装器 postgresql-13.3-2-windows-x64 windows安装器 postgresql-13.3-2-windows-x64 windows安装器 postgresql-13.3-2-...

    PostgreSQL(postgresql-14.2-2-windows-x64.exe)

    PostgreSQL(postgresql-14.2-2-windows-x64.exe),适用于Windows系统:PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象...

    postgresql-11.4-3-windows-x64.exe

    PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现...

    ruoyi-postgresql-flowable

    "ruoyi-postgresql-flowable" 是一个基于 PostgreSQL 数据库的 Ruoyi 前后端分离项目,它集成了 Flowable 工作流引擎,用于实现高效的企业级流程管理。这个项目旨在提供一个完整的解决方案,使开发人员能够快速构建...

    Go-pgweb-一个基于web的PostgreSQL数据库浏览器

    【Go-pgweb:一个基于Web的PostgreSQL数据库浏览器】 Go-pgweb是一个用Go语言开发的轻量级、跨平台的Web应用程序,专门用于浏览和管理PostgreSQL数据库。它提供了一个用户友好的界面,使得数据库操作变得简单直观,...

    PostgreSQL(postgresql-13.5-1-windows-x64.exe)

    PostgreSQL(postgresql-13.5-1-windows-x64.exe)适用于Windows x86-64 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的...

    postgresql-10.16-2-windows-x64.zip

    此压缩包"postgresql-10.16-2-windows-x64.zip"包含了PostgreSQL 10.16的64位Windows版本,适合在Windows操作系统上搭建数据库服务。 PostgreSQL 10.16是该数据库系统的一个稳定版本,它在前一版本的基础上进行了多...

    PG-13.7 数据库安装包 postgresql-13.7-1-windows-x64.exe

    PG-13.7 数据库安装包 postgresql-13.7-1-windows-x64.exe 官方下载的安装包 windows下 直接安装即可

    PostgreSQL(postgresql14-devel-14.1-1PGDG.rhel7.x86_64.rpm)

    PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现...

    Go-PostgreSQLBGWorker用Go编写的PostgreSQL后台工作进程

    在PostgreSQL数据库系统中,后台工作进程(Background Worker)是一种扩展其功能的重要机制。这些进程独立于主要的数据库服务器进程运行,允许开发者实现自定义任务,如定期维护、监控或其他后台服务。Go语言以其...

    xxl-job-2.4.0 适配postgresql

    xxl-job-2.4.0 postgresql初始化脚本

    PGConf.CN2019大会资料 培训PPT--4-李章梅--HugeGraph图数据库介绍及使用PostgreSQL作为后端存储

    根据提供的标题、描述以及部分文档内容,我们可以提炼出与HugeGraph图数据库及其使用PostgreSQL作为后端存储相关的几个核心知识点: ### 1. 图数据库简介 #### 1.1 数据库类型概述 文档中提到了多种类型的数据库,...

    flume-pg-sink:水槽-ng postgresql 数据库接收器

    《Flume-PG-Sink:基于Flow-ng的PostgreSQL数据库接收器详解》 在大数据处理领域,Apache Flume是一款广泛使用的分布式、可靠且可用于有效收集、聚合和移动大量日志数据的工具。它设计的核心理念是简单性、可扩展性...

    PostGreSQL安装部署系列:Centos 7.9 安装指定PostGreSQL-15版本数据库

    sudo /usr/pgsql-15/bin/postgresql-15-setup initdb ``` 初始化完成后,将会创建数据库目录并设置默认权限。 ##### 3.4 启动服务 启动PostgreSQL服务: ```bash sudo systemctl start postgresql-15 ``` 查看...

    postgresql-42.2.14.数据库驱动jar

    而"postgresql-42.2.14.jar"是PostgreSQL数据库的一个Java驱动程序,也被称为JDBC(Java Database Connectivity)驱动,用于允许Java应用程序通过Java API与PostgreSQL数据库进行交互。 JDBC是Java平台的标准接口,...

Global site tag (gtag.js) - Google Analytics