0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)據(jù)庫對象的一些基本知識

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-09 16:42 ? 次閱讀

數(shù)據(jù)庫的功能就是組織管理和存儲各種數(shù)據(jù)庫對象。數(shù)據(jù)庫中的對象是我們進(jìn)行數(shù)據(jù)管理的基本。本篇會回顧一下數(shù)據(jù)庫對象的一些基本知識,讓我們更加清晰的了解這些Oracle數(shù)據(jù)庫對象。

1. 表(Table)

我們操作數(shù)據(jù)庫的時候,大部分都是操作表來完成的。表是一個邏輯概念,是數(shù)據(jù)庫組織管理數(shù)據(jù)的基本單位。

表可以分為關(guān)系表和對象表。關(guān)系表包含堆表、索引組織表、外部表。我們常用的為堆表。

堆表對應(yīng)的段是以堆的結(jié)構(gòu)形式存儲的,存儲的數(shù)據(jù)邏輯上市無序的。

表與段(Segment)對應(yīng)的關(guān)系如下

  • 對于非分區(qū)表,一個表對應(yīng)一個段;
  • 對于分區(qū)表,一個分區(qū)對應(yīng)一個段;
  • 對于有子分區(qū)的表,一個子分區(qū)對應(yīng)一個段;
    其他的數(shù)據(jù)庫對象與此類似

1.1 表分區(qū)

表分區(qū)(Partition),就是根據(jù)用戶的數(shù)據(jù)情況和業(yè)務(wù)需求,將表中的數(shù)據(jù)由一個段中變?yōu)槎鄠€段存儲,以方便對用戶數(shù)據(jù)的管理和維護(hù),提升查詢操作的性能。當(dāng)然也有一些缺點(diǎn),使用不當(dāng)?shù)脑挄霈F(xiàn)一些性能問題;應(yīng)用分區(qū)表需要有更多的經(jīng)驗(yàn),更全面的考量,這也對開發(fā)者提出了更高的要求。

何時應(yīng)用分區(qū):

  • 首先需要考慮的是數(shù)據(jù)量,足夠大的數(shù)據(jù)量才有分區(qū)的必要,少量數(shù)據(jù)根本沒必要進(jìn)行分區(qū)。Oracle官方推薦,表所占的存儲空間超過2GB時,可以考慮對表進(jìn)行分區(qū)。一般來說盡量避免分區(qū),需要分區(qū)一定要有充分的理由。
  • 如果當(dāng)前非分區(qū)的表已經(jīng)影響到了用戶對數(shù)據(jù)的管理和維護(hù),可以考慮分區(qū)。
  • 分區(qū)之后是否能提高用戶的查詢及操作性能。

關(guān)于如何分區(qū),我們后面的文章在繼續(xù)分析。

2. 索引(Index)

索引是建立在表上的邏輯對象。索引可以提高表數(shù)據(jù)的訪問查詢效率,對性能優(yōu)化有著非常大的作用。索引也是和一個或者多個段相關(guān)聯(lián),索引最終存儲的位置也是段。不同類型的索引有不同的存儲邏輯結(jié)構(gòu),如B樹,Bitmap(位圖)等。

索引是表的可選項,創(chuàng)建適當(dāng)?shù)乃饕菙?shù)據(jù)庫優(yōu)化的重中之重。然而索引可以提高查詢效率,同時也會降低DML操作的效率,兩者綜合考慮后才會有比較好的性能。

關(guān)于索引的數(shù)據(jù)庫優(yōu)化方案,大多是避免索引失效,優(yōu)化索引使用順序等。B*樹索引,位圖索引等索引會在后面的文章中具體去說一下。

3. 簇(Cluster)

簇是一個包含一個或多個表數(shù)據(jù)的數(shù)據(jù)庫對象,其中被包含的表中都會具有共同的一列或者多列,這些列稱為簇鍵列。

創(chuàng)建簇需要相應(yīng)的權(quán)限,開發(fā)中使用不多。簇可以分為索引簇和哈希簇,區(qū)別就是查找數(shù)據(jù)的時候前者通過簇鍵列上的索引,后者使用簇鍵列的哈希值。根據(jù)使用場景來確定來使用那種類型。

4.視圖(View) & 物化視圖(Materialized View)

視圖是一種虛定義的邏輯對象,主要用來簡化業(yè)務(wù)邏輯、方便開發(fā)維護(hù),視圖并不包含任何數(shù)據(jù),其數(shù)據(jù)基于視圖對應(yīng)的其他對象。

視圖可以提供一些增刪改查的操作,同時有一定的安全性,可以屏蔽一些列,使用起來也比較靈活。但對于性能會有一些影響。

物化視圖,相對于視圖而言,物化視圖可以實(shí)際存儲數(shù)據(jù),和表一樣對應(yīng)相關(guān)的段。

物化視圖可以用來匯總,計算等業(yè)務(wù)。同時也可以在一定條件下進(jìn)行增刪改查,并且也可以建立索引等。

5. 同義詞(Synonym)

同義詞也是虛的一個邏輯對象,不會存儲任何數(shù)據(jù)。本質(zhì)上算是其他數(shù)據(jù)對象的一個別名。同時可以將同義詞的權(quán)限分配給不同的用戶,作為安全管理的一種方式。

6. 序列(Sequence)

序列不存儲任何數(shù)據(jù),用戶可以通過序列獲取一系列有序的數(shù)值。

定義序列的時候可以定義序列名,升降序,步長等。如果負(fù)載并發(fā)很高的情況下,序列的增長會影響整體的性能。

7. 過程(Procedure) & 函數(shù)(Function)

過程和函數(shù)都是虛邏輯對象,不存儲數(shù)據(jù)。主要功能就是使用數(shù)據(jù)庫編碼的調(diào)用來執(zhí)行一系列任務(wù)。

過程和函數(shù)都是數(shù)據(jù)庫中的對象,有一組SQL或者一些其他的PL語句組成。為解決特定問題而編寫的一單元。

不同的是函數(shù)有一個返回值,除此之位,過程和函數(shù)在其他方面均相同。

8.觸發(fā)器(Trigger)

觸發(fā)器也是數(shù)據(jù)庫的一個邏輯對象,不存儲數(shù)據(jù)。主要是通過數(shù)據(jù)庫編碼,在事件自動觸發(fā)的時候執(zhí)行一組命令。

其執(zhí)行過程是自動的,當(dāng)某一個事件觸發(fā)相關(guān)條件后,則會執(zhí)行。

9. 約束(Constraint)

約束是數(shù)據(jù)庫中的邏輯對象,其功能是通過一些內(nèi)部或者自動逸邏輯來實(shí)現(xiàn)對數(shù)據(jù)的檢查和限制,使其符合某種規(guī)則或者標(biāo)準(zhǔn)。從而實(shí)現(xiàn)數(shù)據(jù)的規(guī)則化,標(biāo)準(zhǔn)化。

常見的約束有

  • 主鍵約束
  • 唯一約束
  • 非空約束
  • 外鍵約束
  • 自定義約束(檢查約束)

總結(jié)

Oracle的基本對象在開發(fā)中使用比較頻繁,我們經(jīng)常會使用到這些對象。每一種對象其背后都有復(fù)雜的工作原理以及使用技巧,這里先簡單介紹這些常用對象,后面再結(jié)合實(shí)際應(yīng)用來說了其在開發(fā)優(yōu)化中的應(yīng)用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4226

    瀏覽量

    85575
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3752

    瀏覽量

    64233
  • Oracle
    +關(guān)注

    關(guān)注

    2

    文章

    286

    瀏覽量

    35086
收藏 人收藏

    評論

    相關(guān)推薦

    自用的一些,包括數(shù)據(jù)庫,多語言,公共

    本帖最后由 inaction 于 2016-5-20 09:41 編輯 自用的一些,包括數(shù)據(jù)庫,多語言,公共等。目前在SQLServer測試過
    發(fā)表于 05-20 09:35

    淺析對象數(shù)據(jù)庫和NoSQL

    (阻抗不匹配)”。于是嗎,關(guān)系型數(shù)據(jù)庫對于程序員的設(shè)計始終有相當(dāng)大的限制,有的人擅長從領(lǐng)域模型去設(shè)計程序,有的人喜好從數(shù)據(jù)存儲層面去設(shè)計代碼。在對象數(shù)據(jù)庫中,可以顯式避免了
    發(fā)表于 05-27 06:36

    對象數(shù)據(jù)庫的天然阻抗

    樣,所以,我們程序員經(jīng)常以這個需要更改表結(jié)構(gòu)拒絕一些軟件的維護(hù)和拓展,這其實(shí)更是錯上加錯;在ODBMS文中提出了對象數(shù)據(jù)庫解決方案:只要更改類結(jié)構(gòu),其他都有ODBMS搞定;使用ORM
    發(fā)表于 05-30 06:56

    HarmonyOS關(guān)系型數(shù)據(jù)庫對象關(guān)系數(shù)據(jù)庫的使用方法

    容易就上手的知識。本篇速成教程直接使用最精準(zhǔn)和簡短的文字,再配上講解代碼,讓我們能在10分鐘左右就能掌握最基本的數(shù)據(jù)庫使用方法。數(shù)據(jù)庫的三大要素:數(shù)據(jù)庫、表、字段,接下來為大家介紹關(guān)系
    發(fā)表于 03-29 14:10

    面向對象數(shù)據(jù)庫的關(guān)鍵技術(shù)和實(shí)現(xiàn)

    面向對象數(shù)據(jù)庫作為第三代數(shù)據(jù)庫,具有前兩代數(shù)據(jù)庫無法比擬的優(yōu)點(diǎn),滿足復(fù)雜數(shù)據(jù)結(jié)構(gòu)和海量存儲需要,是新型數(shù)
    發(fā)表于 09-25 16:45 ?18次下載

    SNMP協(xié)議的一些基本知識

    主要介紹了SNMP的協(xié)議的一些基本知識,通過了解SNMP,可以對很多大系統(tǒng)進(jìn)行遠(yuǎn)程控制。
    發(fā)表于 11-10 10:54 ?0次下載

    基于面向對象數(shù)據(jù)庫的CIM應(yīng)用曹帥

    基于面向對象數(shù)據(jù)庫的CIM應(yīng)用_曹帥
    發(fā)表于 03-16 08:00 ?0次下載

    數(shù)據(jù)庫設(shè)計時有哪些常犯的一些錯誤?數(shù)據(jù)庫設(shè)計的7個常見錯誤資料概述

    優(yōu)秀數(shù)據(jù)庫設(shè)計的藝術(shù)就像游泳。入手相對容易,精通則很困難。如果你想學(xué)習(xí)設(shè)計數(shù)據(jù)庫,定得有一些理論背景,比如關(guān)于數(shù)據(jù)庫設(shè)計范式和事務(wù)隔離級別
    發(fā)表于 09-07 15:12 ?3次下載
    <b class='flag-5'>數(shù)據(jù)庫</b>設(shè)計時有哪些常犯的<b class='flag-5'>一些</b>錯誤?<b class='flag-5'>數(shù)據(jù)庫</b>設(shè)計的7個常見錯誤資料概述

    詳談一些主流開源數(shù)據(jù)庫及工具

    在比較開源數(shù)據(jù)庫時,重要的是弄清楚企業(yè)想要從數(shù)據(jù)庫中獲取什么,以便做出正確的選擇。
    的頭像 發(fā)表于 01-11 15:28 ?2513次閱讀

    oracle基礎(chǔ)教程--其他數(shù)據(jù)庫對象

    oracle基礎(chǔ)教程--其他數(shù)據(jù)庫對象(通信電源技術(shù)期刊官網(wǎng))-該文檔為oracle基礎(chǔ)教程--其他數(shù)據(jù)庫對象講解文檔,是份不錯的參考資料
    發(fā)表于 09-24 14:43 ?2次下載
    oracle基礎(chǔ)教程--其他<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>對象</b>

    Oracle數(shù)據(jù)庫基礎(chǔ)知識

    Oracle數(shù)據(jù)庫基礎(chǔ)知識(現(xiàn)代電源技術(shù)課程總結(jié))-該文檔為Oracle數(shù)據(jù)庫基礎(chǔ)知識講解文檔,是份還算不錯的參考文檔,感興趣的可以下載看
    發(fā)表于 09-28 10:33 ?5次下載
    Oracle<b class='flag-5'>數(shù)據(jù)庫</b>基礎(chǔ)<b class='flag-5'>知識</b>

    Oracle數(shù)據(jù)庫基礎(chǔ)知識講解

    Oracle數(shù)據(jù)庫基礎(chǔ)知識講解(肇慶理士電源技術(shù)有限公司圖片)-該文檔為Oracle數(shù)據(jù)庫基礎(chǔ)知識講解文檔,是份不錯的參考文檔,感興趣的可
    發(fā)表于 09-28 13:39 ?10次下載
    Oracle<b class='flag-5'>數(shù)據(jù)庫</b>基礎(chǔ)<b class='flag-5'>知識</b>講解

    DCDC電路設(shè)計的一些基本知識

    最早的時候,我們都是自己搭建電源供電電路,現(xiàn)在已經(jīng)有很多集成芯片,DC-DC電路在電子產(chǎn)品中也是隨處可見。本文與大家分享一些DCDC電路設(shè)計的一些基本知識。
    發(fā)表于 03-07 13:48 ?4255次閱讀

    西門子伺服驅(qū)動器維修的一些基本知識

    西門子伺服驅(qū)動器維修的一些基本知識
    的頭像 發(fā)表于 11-23 10:55 ?1654次閱讀

    sql數(shù)據(jù)庫入門基礎(chǔ)知識

    開發(fā)人員或數(shù)據(jù)庫管理員的重要基礎(chǔ)。本文將介紹SQL的入門基礎(chǔ)知識,詳細(xì)介紹SQL的語法、常用操作以及一些實(shí)用技巧。 、SQL的基本概念和語法 數(shù)據(jù)
    的頭像 發(fā)表于 11-23 14:24 ?1857次閱讀