热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

使用GUID作为数据表主键的好处

使用GUID作为数据表主键好处数据表主健通常采用以下3种方式:1.自动递增值2.唯名称这个是使用自己定义算法来生成个唯序列号3.GUID(全局唯标识符)GUID和自动递增值及唯名称比较GUID

使用GUID作为数据表主键好处
数据表主健通常采用以下 3种方式:
1. 自动递增值
2. 唯名称这个是使用自己定义算法来生成个唯序列号
3. GUID(全局唯标识符)
GUID和自动递增值及唯名称比较GUID在客户端生成由GUID特性决定通过GUID生成值可能出现重复机会几乎
等于零因此保证在插入表时候主键值唯
可以方便处理分布式数据提交比如:分店数据向总店提交――直接将该部分数据插入即可
支持离线数据处理对本地数据包进行新增记录时即可将该数据表关键字段值赋值其处理思路方法是和在线新增
时是致
自动递增值 在数据库服务器端生成由于该值是由数据库系统内部处理亦保证其唯性但由于其是在数据库服务器
端生成因此必须将该值返回客户端客户端通过该值过行其它操作比如张单据(主从表)是使用自动递增值当插入单
据抬头后必须将单据抬头关键字段值返回再插入单据明细(单据明细是通过单据抬头关键字段进行关联)
不能很好处理分布式数据提交比如:分店数据向总店提交――提交数据时必须重新生成该数据表关键字段值以保证
该字段值唯
要支持离线数据处理需要进行额外处理对本地数据包进行保存记录(保存到本地)时需要插入个假设唯值在提交
离线数据回数据服务器时再重新生成真正唯值并重新进行相关处理
唯名称 在客户端生成或在服务端生成相对于自动递增值区别地方就是自己维护生成唯值算法及所保存临时值容
易造成出错或其它问题如果是在客户端生成唯值话还必须保证所生成值是唯
不能很好处理分布式数据提交比如:分店数据向总店提交――提交数据时必须重新生成(或预先处理)该数据表关键
字段值以保证该字段值唯
要支持离线数据处理需要进行额外处理对本地数据包进行保存记录(保存到本地)时需要插入个假设唯值在提交离
线数据回数据服务器时再重新生成真正唯值并重新进行相关处理
例子介绍说明下面以个新增单据保存比较GUID和自动递增值/唯名称差别
动作
GUID
自动递增值/唯名称
单据抬头
新增
单据抬头关键字段值:获取并填写
单据抬头关键字段值:无
保存
直接保存
首先获取并填写关键字段值然后再进行保存
返回
直接返回
返回时必须将关键字段值返回
单据明细
新增
关联单据抬头字段值:直接填写
单据明细关键字段值:获取并填写
关联单据抬头字段值:无
单据明细关键字段值:无
保存
直接保存
获取单据抬头关键字段值并填写到单据明细关联单据抬头字段中;
然后获取并填写单据明细关键字段值;
再进行保存
综合以上所述用GUID作为数据表关键字段值是可以减轻关键字段相关操作并且是最直接实用思路方法


推荐阅读
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • MVC模式下的电子取证技术初探
    本文探讨了在MVC(模型-视图-控制器)架构下进行电子取证的技术方法,通过实际案例分析,提供了详细的取证步骤和技术要点。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • PGXC中的两阶段提交机制及其对事务一致性的保障
    PGXC作为一款基于PostgreSQL的分布式数据库系统,利用Sharding技术将数据分散存储于多个数据库实例中。本文探讨了PGXC的两阶段提交过程及其实现事务强一致性的方法。 ... [详细]
  • 本文通过一系列实验,探讨了Oracle 11g数据库中密码错误验证延迟特性对用户登录速度的影响。实验旨在验证当某个用户因输入错误密码而触发延迟时,是否会影响其他用户的正常登录速度。 ... [详细]
  • 本文探讨了在使用 MyBatis 进行批量数据处理时遇到的参数绑定异常问题,并提供了详细的解决方案。 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • 本文提供了一个关于AC自动机(Aho-Corasick Algorithm)的详细解析与实现方法,特别针对P3796题目进行了深入探讨。文章不仅涵盖了AC自动机的基本概念,还重点讲解了如何通过构建失败指针(fail pointer)来提高字符串匹配效率。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 菜鸟物流用户增长部现正大规模招聘P6及以上级别的JAVA工程师,提供年后入职选项。 ... [详细]
author-avatar
多米音乐_35562359
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有