好久不写博客了,也是ITEYE最近的首页文章实在太水,来逛的少。最近在看淘宝沈询的博客文章,讲数据库方面的理论和实践,科普性的小文,有时来点小幽默,看起来蛮轻松。微博上也大概录了二十条笔记,现在满脑子各类数据结构的特性,如范围查找、读写性能、是否面向磁盘结构、并行指标、内存占用。像把大学时学的不怎么好的数据结构重新捡起了理了一遍,当时觉得这一大坨各种烦人还绕人的数据结构究竟有啥用(其实现在工作中用到的也就有限的几种,包括算法也是,做行业业务软件的重点还是在梳理业务),现在才知道大用场在这里,IT系统的基石还是这些东东。拿数据库来说,因为无数前辈们的智慧能够将底层巨复杂的东东抽象成你所需要了解的SQL语言就可以应付一般的单机数据库日常使用需要。
数据库底层的核心,其实就是映射(mapping),也就是一大堆的key-value。针对这些映射数据,其实做的就是两件事:读和写。不断的读,不断的写,交叉的读和写,这些就是数据库需要做的事情。但只这么说的话其实懂点计算机语言的都能写个小数据库出来,但一般除了写的人自己没人用,为什么?当然是性能。
SQL语言可以看作是一个数据库供使用时的操作指令,但如果你的数据库读/写时很慢,比其它产品慢(不拿商业的就拿开源的比)那鬼才用你,当然以国内的环境说不定某些高校中倒会发生这种奇葩事情。但说到慢肯定不会一开始就慢(不然这鸟代码写的得多烂),一般都会达到某种限制之后才会出现,比如并发读,已经存有大量数据时的写,如何保证事务等等,这时才是拼产品真正实力的时候。针对各种不同的问题场景,出现了不同的解决方案,比如要快速查找数据,用有序数组存储,其二分查找的时间复杂度大概是O(log2N)。用平衡二叉树可以支持数据自动扩展,让树能够在保持有序的前提下尽可能平衡。要并行度高的话可以用跳表,要面向磁盘结构的话可以试试B树、LSM Tree。但又没有一种数据结构能包打天下?答案是没有,没有一种能够解决所有的问题,实际更多是在各种权衡和妥协中找到一个平衡点。
正如作者所言“在目前的硬件体系下,写的快的一般查询都慢,查询的条件支持丰富的基本上写的都慢,好不容易弄个系统写的也快查的也挺快的机器消耗就大了。市面上的大部分的数据库系统,主要做的事情就是把数据在上面这两类数据库中倒来倒去,以期望于满足更多应用的需求场景,代价嘛就是代码非常复杂。”
现实就是容易理解的模型往往性能都不好,性能好的模型往往不容易理解,所以数据库,终究还是数据结构。。。
相关推荐
数据库是存储和管理数据的核心系统,它按照特定的结构组织数据,使得数据的存取、更新和查询变得高效。在IT行业中,Oracle数据库是广泛使用的大型企业级数据库管理系统,以其强大的性能、稳定性和安全性著称。另一...
学生学籍、学历信息系统是一个庞大的系统,本文重点讨论的是学生信息数据库中数据结构的维护。 在维护学生信息数据库时,首先需要考虑数据的来源。由于学生信息数据库中的数据来源非常广泛,数据种类五花八门,数据...
在数据库领域,数据结构的理解与应用尤为重要,因为数据库系统本身就是基于各种数据结构来实现数据存储和检索的。 在数据库系列的学习中,我们首先会接触到基本的数据结构,如链表、栈、队列、树和图。这些结构各有...
数据库结构和数据对比工具是IT领域中用于管理和分析数据库的重要辅助软件。这些工具的主要功能是对两个或多个数据库的架构和实际存储的数据进行比较,以便于识别差异、同步更新或者进行数据迁移。在数据库管理和开发...
数据结构_数据库课程设计—飞机订票系统源码+数据库+部署文档。已获通过的高分项目。 frontend为前端 backend为后端, 数据结构_数据库课程设计—飞机订票系统源码+数据库+部署文档。已获通过的高分项目。 frontend...
中科大校内资源,数据结构、数据库、操作系统 精品课件。和大家分享。
数据库系统采用三级模式(概念模式、外模式和内模式)和两级映射(概念模式到内模式、外模式到概念模式)来抽象和管理数据,使得数据的逻辑结构与物理存储分离,增强了系统的灵活性和可扩展性。 数据模型是数据库...
一次性生成某个数据库的详细的数据结构,生成的文件为html格式,且按表名排序好,方便程序人员查看。最主要是不需要每次有结构变动都要人工编辑相应的数据库结构文档,为程序开发人员提供一点偷懒的方法。 <br/>...
### PowerDesigner从数据库中导出表结构 ...通过上述步骤,用户可以顺利地使用PowerDesigner从现有的数据库中导出表结构,并进一步进行数据分析和模型优化等工作。这对于加快项目进度、减少开发成本具有重要意义。
这涵盖了数据库的基本概念,数据模型,数据库系统结构,以及关系数据库等核心主题。 首先,数据是描述事物的符号记录,它是数据库中的基本元素。数据库(DB)是这些数据的有序集合,存储在计算机中,供多个用户共享...
数据库系统工程师考试试题分类精解(2.数据结构与算法),含知识点、往年试题及试题精解
而数据对比工具则是一种实用的辅助工具,用于比较不同数据库之间的结构差异和数据差异,确保数据的一致性和完整性。 数据库结构主要包括以下部分: 1. 表(Table):数据库中的基本单位,由一系列行和列组成,列...
综上所述,Java实现多数据库数据同步是一个涉及多种技术和策略的复杂问题,需要根据具体业务需求和系统架构来选择合适的方法。在实践中,应注重设计的灵活性、可扩展性和容错性,以保证系统的稳定运行。
《数据库代码大全(源代码大全数据结构)》这个资源显然提供了丰富的数据库编程实践,涵盖了数据结构的经典程序解析,这些都是数据库开发的基础。以下将深入探讨其中可能包含的知识点。 首先,我们要明白数据结构是...
数据结构是对计算机的数据组织方式和数据之间的联系进行框架性描述的集合,是对数据库静态特性的描述。例如,学生(姓名、性别、出生日期、籍贯、所在系别、入学日期)就是一种数据结构。数据结构是刻画一个数据模型...
我也是在网上找到的,搬到了这里. 如果有好的表结构的资源,可以Q我,大家一起学习交流. 我也是在不断的探索中~
数据结构与算法是计算机科学的基础,对于理解和设计高效的数据库系统至关重要。在大学的数据库课程中,这些主题通常作为核心部分进行讲解,以帮助学生掌握如何有效地存储、管理和处理大量数据。 101ͼ.ppt可能包含...
在"不同数据库之间的不同表结构的数据迁移"这个主题中,我们将深入探讨这个过程,以及如何处理不同数据库系统之间可能存在的表结构差异。 首先,我们要理解不同的数据库管理系统(DBMS)如MySQL、Oracle、SQL ...
数据库结构演示软件是一款专门设计用于帮助用户理解和学习数据结构与算法的可视化应用。通过图表和动画的方式,这款软件能够生动地展示各种数据库模型和操作,使得抽象的概念变得直观易懂。 在数据结构领域,常见的...
# 数据结构与数据库索引 > 关键词:链表、数组、散列表、红黑树、B+ 树、LSM 树、跳表 ## 引言 **数据库**是“按照 **数据结构** 来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享...