DB 常见dataType 介绍

  • 为什麽要写这篇?

    专案开发过程中,常会需要设计schema,建立新的table,由於我是自学转职的,所以其实对於什麽型别的特性与占用空间没什麽概念,以前只是觉得型别不就是 字串、数字、日期吗,但随着经验累积,发现原来在这之下还有许多更细致的型别,适用在不同情况,还有更进阶的设计,而给与column适当的型别,对於正确性、效能也是有影响的,我们总会希望产品能够好好的,在不同情况下都能运作正常,因此在前期设计的时候就满重要的,以下是整理目前我常用且对於这些型别的理解,或许没有到太深,但我秉持着够用就好,能够判别就好,如果後续有情境需要了解更深再了解罗~(ps: 以下是 postgresql 的例子)

  • 有什麽重点呢?

    • Bit vs Byte ?

      Bit(位元)、Byte(位元组),1 Byte = 8 Bits

      Bit 为电脑运算的基础,常用来作资料传输的单位,二进制(ex. 资料传输 用 bps = bit per second)

      Byte电脑档案大小的基本计算单位(ex. 档案大小 Byte)

      1byte = 8 Bits = 0~255的数字(二进位) = 一个英文字 = 一个符号 (2byte = 1中文字)

      ref: https://ytliu0.pixnet.net/blog/post/229587764-bit、byte是什麽意思?bit、byte有什麽不同?

    • BigSerial 是什麽?

      结尾为 Serial 皆不是正式型别,而只是方便建立唯一识别的值的语法,该特性是在插入资料时,资料库会自动对单一笔资料给於顺序编号

    • int2 vs. int4(int) vs int8

      後方的数字表示是储存时占用的 bytes(ex. int2 = 2bytes 数字范围 1 to 32767 ),要是储存资料超过数字范围,就会出错.
      目前设计时候会根据实际可能使用到的数字范围,作为选择依据
      ref: https://docs.postgresql.tw/the-sql-language/data-types/numeric-types

    • json vs jasonb

      资料栏位还可以是 json ,我第一次知道时真是惊为天人,这个栏位适合储存重要性低、可能常变动的资料,重要性不足道可以给他一个正式栏位(ex. 说明备注)

      两者差异?
      jsonb 把资料存进DB时,会多把输入资料转换成为二进位格式储存,因此储存资料时速度稍慢,但後续取用则不需解析,且增加索引处理功能

      json 资料型别储存与输入字串完全相同的内容,处理函数必须在每次执行时重新解析;jsonb 资料型别则以分解後的二进位格式储存,由於增加了转换成本,因此资料输入的速度稍慢,但由於後续不需要解析,因此处理速度明显加快。jsonb 还支援索引处理,这是一个很大的优势。

  • 所以呢?

    • 认识型别、与其占用的空间,可以帮助自己在设计规划的时候,单笔资料的重量有基本的观念,我认为这是後续效能优化的基本功
    • 型别形形色色,虽不需要了解到全部,但可以在设计时,多思考这个栏位後续的发展、容错率等等,藉以选择最适合的配置,降低出错,提升效率

<<:  [Day 02] Why MLOps — 从"地平说" 走向宇宙

>>:  Spring Framework X Kotlin Day 12 Cache

Day_14 : 让 Vite 来开启你的Vue 之 Composition API

Hi Dai Gei Ho~ 我是Winnie~ 在今天的内容中,此篇文章将要来说 Composit...

JS 18 - 阵列也有赝品?如何辨识伪造的阵列?

大家好! 昨天我们建立了看似阵列的物件,其实它就是接下来要介绍的伪阵列物件(Array-like O...

Intro

屯马开通真的很兴奋 早阵子(2021 年 6 月 27 日)港铁屯马綫全綫通车,当日有电视台访问了一...

[Day22] Scrum失败经验谈 – 承认就是陨石吧!

我就像是鬼遮眼一样,竟然会认为陨石不陨石,说个笑话,我还突发奇想的说,这次开发是「流星」开发,超级r...