后端主流数据库分析

server/2025/3/14 12:39:57/

一、关系型数据库(RDBMS)

1. MySQL:金融支付系统核心

行业场景:​

  • 金融支付:银行交易流水、支付订单(ACID事务保障)。
  • ​电商平台:商品库存管理、订单状态跟踪(高并发OLTP)。
  • SaaS服务:多租户用户管理(分库分表隔离数据)。

Python实战代码

python"># 金融交易事务操作(原子性保障)
import pymysql
from contextlib import contextmanager@contextmanager
def mysql_transaction():conn = pymysql.connect(host='localhost', user='root', password='******', db='******')try:with conn.cursor() as cursor:yield cursorconn.commit()  # 事务提交except Exception as e:conn.rollback()    # 事务回滚raise efinally:conn.close()# 使用示例:转账操作
def transfer_money(from_account, to_account, amount):with mysql_transaction() as cursor:# 扣除转出账户cursor.execute("UPDATE accounts SET balance = balance - %s WHERE id = %s", (amount, from_account))# 增加转入账户cursor.execute("UPDATE accounts SET balance = balance + %s WHERE id = %s", (amount, to_account))# 记录交易流水cursor.execute("INSERT INTO transactions (from_id, to_id, amount) VALUES (%s, %s, %s)", (from_account, to_account, amount))# 调用:从账户1转100元到账户2
transfer_money(1, 2, 100)

性能技巧

  • 使用连接池(如DBUtils.PooledDB)避免频繁创建连接
  • account_idtransaction_time字段建立联合索引加速查询

​性能优化

  • 索引设计:避免全表扫描,对高频查询字段(如user_id)建B+树索引。
  • 读写分离:用ProxySQL或MaxScale分离读写流量,主库写,从库读。​

灾难恢复

  • 每日全量备份 + Binlog 增量备份,通过 mysqldump 或 Percona XtraBackup 实现。
  • 快速恢复:mysqlbinlog 重放 Binlog 到指定时间点。

2. PostgreSQL:地理信息分析系统

行业场景

  • ​地理信息(GIS)​:物流路径规划(PostGIS扩展支持空间数据)。
  • 科研计算:基因序列分析(数组类型和PL/Python扩展)。
  • 金融风控:复杂SQL分析(窗口函数计算用户行为聚合)。

Python实战代码

python"># 使用PostGIS计算两个坐标距离
import psycopg2
from geoalchemy2 import WKTElement
from sqlalchemy import create_engine# 创建空间数据表
engine = create_engine('postgresql+psycopg2://user:pass@localhost/gis_db')
with engine.connect() as conn:conn.execute("""CREATE TABLE IF NOT EXISTS warehouses (id SERIAL PRIMARY KEY,name VARCHAR(100),location GEOGRAPHY(Point))""")# 插入坐标点(北京首都机场)
point = WKTElement('POINT(*.*.*.*)', srid=4326)
insert_sql = "INSERT INTO warehouses (name, location) VALUES (%s, %s)"
with engine.connect() as conn:conn.execute(insert_sql, ('Beijing Airport', point))# 查询距离某点50公里内的仓库
query = """SELECT name, ST_Distance(location, ST_GeogFromText('POINT(*.*.*.*)')) as distanceFROM warehousesWHERE ST_DWithin(location, ST_GeogFromText('POINT(*.*.*.*)'), 50000)
"""
result = engine.execute(query)
for row in result:print(f"{row.name} 距离天安门 {row.distance:.2f

http://www.ppmy.cn/server/174882.html

相关文章

DataGear部署文档(基于openeuler)

目录 文章目录 目录安装JDK部署DataGear启用DataGear关于DataGear系统 安装JDK DataGear需要JDK 8的运行环境,所以我们需要预先在openeuler上安装好 可以点击这里进行下载:https://www.oracle.com/cn/java/technologies/downloads/#license-lightbox …

【原创】在高性能服务器上,使用受限用户运行Nginx,充当反向代理服务器[未完待续]

起因 在公共高性能服务器上运行OllamaDeepSeek,如果按照默认配置启动Ollama程序,则自己在远程无法连接你启动的Ollama服务。 如果修改配置,则会遇到你的Ollama被他人完全控制的安全风险。 不过,我们可以使用一个方向代理&#…

Mac java全栈开发环境配置

前言 由于最近手中的windows本子坏了,所以搞了一台m系列的macbookpro 作为一个开发者 面对新设备最先考虑的应该就是各种sdk、中间件服务、环境变量配置和工具了吧!!! 本文将带你手把手学习Mac搭建属于自己的本地开发环境 安装brew 什么是brew? ‌Brew(全称Homebrew)…

轻量级嵌入式WebRTC开发:音视频通话EasyRTC纯C语言实现SFU/MCU架构与QoS优化

WebRTC本身也有部分模块是用C语言编写的,尤其是在音视频处理、网络传输等底层模块。WebRTC不仅仅是一个编程语言,它是一个完整的通信框架,包含了多个子系统和组件,如音视频编解码、网络适配、安全传输等。 使用纯C语言构建的EasyR…

【电磁兼容】知识点1:CE传导骚扰限值 RE辐射骚扰限值

1组设备:以电磁辐射,容性耦合,感性耦合形式有意向外界发送9KHZ~400GHZ频段内能量的设备。该设备包括用于材料分析,传送电磁能量的工科医设备。 2组设备:非一组 A类设备:非家居 B类设备:家居 一。…

医院本地化DeepSeek R1对接混合数据库技术实战方案研讨

1. 引言 Deep SEEK R1是一个医疗智能化平台,通过本地化部署实现数据的安全性和可控性,同时提供高效的计算能力。随着医疗信息化的迅速发展,各种数据源的增加使得医院面临更多复杂的挑战,包括如何处理实时监测数据、如何进行大数据环境下的复杂查询以及如何整合多模态数据等…

桂链:什么是区块链账本?

桂链是基于Hyperledger Fabric开源区块链框架扩展开发的区块链存证平台,是桂云网络(OSG)公司旗下企业供应链、流程审批等场景数字存证软件产品,与桂花流程引擎(Osmanthus)并列为桂云网络旗下的标准与可定制…

如何通过自动化测试提升DevOps效率?

引言 在数字化转型的浪潮中,企业对软件交付速度和质量的要求日益严苛。DevOps通过持续集成(CI)、持续交付(CD)和持续监控(CM)等实践,将开发、测试与运维深度整合,显著缩…