后端主流数据库分析

news/2025/3/17 1:02:15/

一、关系型数据库(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/news/1579701.html

相关文章

用Python实现持续集成与部署(CI/CD)流程:自动化测试、构建与部署

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代软件开发中,持续集成与持续部署(CI/CD)已成为提高开发效率、确保代码质量的关键实践。本文将详细介绍如何使用Python编写CI/CD脚本…

[IP]RGMII

ETH_RGMII是一个网口IP,接口为RGMII类型 包含MAC,ARP,UDP等模块,用户接口为axis。 IP界面 信号定义 、 IP 使用要求 IP须在Vivado 2024.1及以上版本使用! Q/871128330 下载测试使用(含测试工程)

如何用AI制作PPT,轻松生成高效演示文稿

如何用AI制作PPT,轻松生成高效演示文稿!在这个信息爆炸的时代,做一份引人注目的PPT变得越来越重要,尤其是当你需要快速交付工作或在演讲中展示时。你是否也曾因为制作PPT而头痛不已?一个好消息是:现在有了A…

CI/CD

CI/CD(持续集成与持续交付/部署)是一种软件开发实践,用于提高软件开发的效率和质量,尤其是在开发团队规模较大时。它通过自动化的方式,减少人工干预,使得开发过程更加高效和可靠。 1. 持续集成&#xff08…

2025年渗透测试面试题总结-安恒 (题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 安恒 1. sqlmap爆出当前数据库库名的参数是什么? 2. nmap探测系统类型的参数是&#xff1…

【AIGC】计算机视觉-YOLO系列家族

YOLO系列家族 (1)YOLO发展史(2) YOLOX(3) YOLOv6(4) YOLOv7(5) YOLOv8(6) YOLOv9(7)YOLOv10(8&…

31页PPT解析数据湖架构、数据湖和数据仓库的区别、湖仓一体化湖仓一体建设解决方案

《大数据湖仓一体解决方案》PPT文档主要介绍了企业数据平台从数据库、数据仓库到数据湖,再到湖仓一体的演进过程,并详细分析了湖仓一体架构的特性及其优势。该方案通过融合数据湖与数据仓库的优势,实现了统一的数据存储、计算和接口管理&…

spring boot实现程序运行过程中数据源动态切换

项目中有一个需求,spring boot项目连接postgres数据库的地址,是存储在etcd当中的,在程序启动后,当etcd中的地址变化时,需要程序去连接新的postgres地址。 1. 修改Datasource定义,改为使用DynamicPGDataSou…