架构架构设计师备考第32天——数据库交互&NoSQL

一、 应用程序与数据库的交互

1 库函数级别访问接口

核心机制

  • 通过底层API直接调用数据库功能(如Oracle的OCI)。
  • 开发流程
    1. 高级语言编写业务逻辑 → 2. 调用库函数执行SQL(如C程序调用OCI函数)。
  • 优点
    • 高度灵活性,结合SQL非过程性与高级语言过程性。
  • 缺点
    • 强依赖特定数据库(如OCI仅支持Oracle),需深入理解DBMS机制,开发效率低。

考点:OCI的适用场景与局限性。
考题示例
Q:Oracle的OCI接口属于哪种数据交互方式?其最大缺点是什么?
A:库函数级别访问;强数据库依赖性。


2 嵌入式SQL访问接口

核心机制

  • 将SQL语句嵌入高级语言源码(如C、Java),凭借预编译器转换为纯宿主语言代码。
  • 技术挑战与解决方案
    问题解决方案
    编译器不识别SQL预编译器转换SQL为函数调用
    程序与DBMS数据传递函数库实现数据传递
    数据类型不匹配预编译器处理类型转换
  • 扩展语法:宿主变量声明、游标操作等。

考点:嵌入式SQL的预编译过程、宿主语言概念。


3 通用数据接口标准

代表技术

  1. ODBC(开放数据库连接)
    • 原理:应用程序 → ODBC API → DBMS驱动程序 → 数据库。
    • 优势:统一访问异构数据库(如SQL Server、Oracle)。
    • 流程:注册数据源 → ODBC建立连接 → 执行SQL。
  2. JDBC(Java数据库连接)
    • Java专属API,支持跨数据库SQL执行(如MySQL、PostgreSQL)。
  3. ADO.NET
    • .NET框架的类库,支持关系数据、XML及应用程序交互。

考点:ODBC/JDBC的跨数据库原理、数据源注册机制。
考题示例
Q:ODBC如何建立对不同数据库的统一访问?
A:通过DBMS专属驱动程序屏蔽底层差异。


4 ORM访问接口

核心机制

  • 对象与关系数据库的映射(如Java的Hibernate、MyBatis)。
  • 工作流程
    程序对象 → ORM框架 → 生成SQL → 数据库操作。
  • 优势
    • 降低SQL依赖,提升研发效率(程序员专注对象而非SQL)。
  • 框架对比
    框架类型特点
    Hibernate全自动能力强但复杂笨重
    MyBatis半自动灵活度高,SQL可控

考点:ORM解决“对象-关系阻抗不匹配”的原理、框架选型依据。


二、 NoSQL数据库

1 分类与特点

四大类型

  1. 键值存储(如Redis):高性能读写,适用缓存、会话存储。
  2. 文档数据库(如MongoDB):JSON/BSON格式,灵活模式。
  3. 列族数据库(如Cassandra):分布式存储,高扩展性。
  4. 图数据库(如Neo4j):高效处理实体关系(如社交网络)。

核心特点

  • 无固定模式:动态数据结构。
  • 分布式架构:水平扩展,容错性强。
  • 最终一致性:替代ACID,保障高可用。
2 体系框架

典型架构对比

类型数据模型适用场景
键值库Key-Value实时计数器、配置存储
文档库Document内容管理、用户画像
列族库Wide Column日志分析、时序数据
图数据库Graph推荐系统、欺诈检测

嵌入式架构):

  • 特点
    • 数据库库文档直接链接到应用程序(如SubVersion)。
    • 无需独立部署,数据访问由应用全权控制。
  • VS 数据库服务器
    特性嵌入式数据库数据库服务器
    部署方式与应用集成独立安装
    访问控制应用管理DBMS管理
    适用场景单机应用、移动端多用户并发系统

考点:NoSQL分类及适用场景、CAP定理(一致性/可用性/分区容忍性权衡)。


本章核心考点总结

技术类别核心概念典型考题方向
库函数接口OCI强依赖性适用场景分析
嵌入式SQL预编译机制宿主语言作用
通用接口ODBC跨库原理JDBC与Java整合
ORM对象-关系映射Hibernate vs MyBatis
NoSQL分类与CAP定理嵌入式架构特点

附:高频考题

  1. Q:ORM框架如何解决对象与数据库的异构性问题?
    A:借助元数据映射对象属性与表字段,自动生成SQL。
  2. Q:NoSQL中“最终一致性”适用于什么场景?
    A:高并发读写且允许短暂数据不一致的平台(如社交平台点赞)。
posted @ 2025-09-25 18:54  yfceshi  阅读(17)  评论(0)    收藏  举报