91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

數(shù)據(jù)庫(kù)中的schema

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 作者:馬哥Linux運(yùn)維 ? 2022-06-07 09:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

schema 一詞起源于希臘語(yǔ)中的 formfigure,但具體應(yīng)該如何定義 schema 取決于應(yīng)用環(huán)境的上下文。schema 有不同的類型,其含義與數(shù)據(jù)科學(xué)、教育、營(yíng)銷和 SEO 以及心理學(xué)等領(lǐng)域密切相關(guān)。

在維基百科中將 schema 解釋為,圖式,在心理學(xué)中主要描述一種思維或行為類型,用來(lái)組織資訊的類別,以及資訊之間的關(guān)系。它也可以被描述為先入為主思想的心理結(jié)構(gòu),表示世界某些觀點(diǎn)的框架,或是用于組織和感知新資訊的系統(tǒng)。

但在計(jì)算機(jī)中的 schema 其實(shí)與這個(gè)解釋很接近了,從很多地方都可以看到schema這個(gè)名詞,例如 database,openldap,programing language 等的。這里可以簡(jiǎn)單的把 _schema_理解為元數(shù)據(jù)集合(metadata component),主要包含元素及屬性的聲明,與其他數(shù)據(jù)結(jié)構(gòu)組成。

數(shù)據(jù)庫(kù)中的 schema

在數(shù)據(jù)庫(kù)中,schema就像一個(gè)骨架結(jié)構(gòu),代表整個(gè)數(shù)據(jù)庫(kù)的邏輯視圖。它設(shè)計(jì)了應(yīng)用于特定數(shù)據(jù)庫(kù)中數(shù)據(jù)的所有約束。當(dāng)在數(shù)據(jù)建模時(shí),就會(huì)產(chǎn)生一個(gè) schema。在談到關(guān)系數(shù)據(jù)庫(kù)]和面向?qū)ο髷?shù)據(jù)庫(kù)時(shí)經(jīng)常使用 schema。有時(shí)也指將結(jié)構(gòu)或文本的描述。

數(shù)據(jù)庫(kù)中 schema 描述數(shù)據(jù)的形狀以及它與其他模型、表和庫(kù)之間的關(guān)系。在這種情況下,數(shù)據(jù)庫(kù)條目是 schema 的一個(gè)實(shí)例,包含 schema 中描述的所有屬性。

數(shù)據(jù)庫(kù) schema 通常分為兩類:定義數(shù)據(jù)文件實(shí)際存儲(chǔ)方式的物理數(shù)據(jù)庫(kù) schema 邏輯數(shù)據(jù)庫(kù) schema,它描述了應(yīng)用于存儲(chǔ)數(shù)據(jù)的所有邏輯約束,包括完整性、表和視圖。常見包括

  • 星型模式(star schema)
  • 雪花模式(snowflake schema)
  • 事實(shí)星座模型(fact constellation schema 或 galaxy schema)

星型模式是類似于一個(gè)簡(jiǎn)單的數(shù)據(jù)倉(cāng)庫(kù)圖,包括一對(duì)多的事實(shí)表和維度表。它使用非規(guī)范化數(shù)據(jù)。

ac8f944a-e59d-11ec-ba43-dac502259ad0.png

雪花模式是更為復(fù)雜的一種流行的數(shù)據(jù)庫(kù)模式,在該模式下,維度表是規(guī)范化的,可以節(jié)省存儲(chǔ)空間并最大限度地減少數(shù)據(jù)冗余。

事實(shí)星座模式遠(yuǎn)比星型模式和雪花模式復(fù)雜得多。它擁有多個(gè)共享多個(gè)維度表的事實(shí)表。

acc2ca7c-e59d-11ec-ba43-dac502259ad0.png

Kubernetes 中的 schema

通過上面的闡述,大概上可以明白 schema 究竟是什么東西了,在 Kubernetes 中也有 schema 的概念,通過對(duì) kubernetes 中資源(GVK)的規(guī)范定義、相互關(guān)系間的映射等,schema 即 k8s 資源對(duì)象元數(shù)據(jù)。

而 kubernetes 中資源對(duì)象即GroupVersionKind這些被定義在staging/src/k8s.io/api/type.go 中,即平時(shí)所操作的 yaml 文件,例如

apiVersion:apps/v1
kind:Deployment
metadata:
name:ngx
namespace:default
spec:
selector:
matchLabels:
app:ngx
template:
metadata:
labels:
app:nginx
spec:
containers:
-name:ngx-schema
image:nginx
ports:
-containerPort:80
ad338618-e59d-11ec-ba43-dac502259ad0.png

而對(duì)應(yīng)的的即為 TypeMetaObjectMetaDeploymentSpec,TypeMetakindapiserverObjectMetaName、NamespaceCreationTimestamp 等段。

DeploymentSpec則對(duì)應(yīng)了 yaml 中的 spec。

而整個(gè) yaml 組成了 一個(gè) k8s 的資源對(duì)象。

typeDeploymentstruct{
metav1.TypeMeta`json:",inline"`
//Standardobjectmetadata.
//+optional
metav1.ObjectMeta`json:"metadata,omitempty"protobuf:"bytes,1,opt,name=metadata"`

//SpecificationofthedesiredbehavioroftheDeployment.
//+optional
SpecDeploymentSpec`json:"spec,omitempty"protobuf:"bytes,2,opt,name=spec"`

//MostrecentlyobservedstatusoftheDeployment.
//+optional
StatusDeploymentStatus`json:"status,omitempty"protobuf:"bytes,3,opt,name=status"`
}

register.go則是將對(duì)應(yīng)的資源類型注冊(cè)到 schema 中的類

var(
//TODO:moveSchemeBuilderwithzz_generated.deepcopy.gotok8s.io/api.
//localSchemeBuilderandAddToSchemewillstayink8s.io/kubernetes.
SchemeBuilder=runtime.NewSchemeBuilder(addKnownTypes)
localSchemeBuilder=&SchemeBuilder
AddToScheme=localSchemeBuilder.AddToScheme
)

//Addsthelistofknowntypestothegivenscheme.
funcaddKnownTypes(scheme*runtime.Scheme)error{
scheme.AddKnownTypes(SchemeGroupVersion,
&Deployment{},
&DeploymentList{},
&StatefulSet{},
&StatefulSetList{},
&DaemonSet{},
&DaemonSetList{},
&ReplicaSet{},
&ReplicaSetList{},
&ControllerRevision{},
&ControllerRevisionList{},
)
metav1.AddToGroupVersion(scheme,SchemeGroupVersion)
returnnil
}

apimachinery包則是 schema 的實(shí)現(xiàn),通過看其內(nèi)容可以發(fā)現(xiàn),kubernetes 中 schema 就是GVK的屬性約束 與GVR之間的映射。

通過示例了解 schema

例如在apps/v1/deployment這個(gè)資源,在代碼中表示k8s.io/api/apps/v1/types.go,如果需要對(duì)其資源進(jìn)行擴(kuò)展那么需要怎么做?如,建立一個(gè)StateDeplyment資源

typeDeploymentstruct{
metav1.TypeMeta`json:",inline"`
//Standardobjectmetadata.
//+optional
metav1.ObjectMeta`json:"metadata,omitempty"protobuf:"bytes,1,opt,name=metadata"`

如上述代碼所示,Deployment 中的metav1.TypeMetametav1.ObjectMeta

ad810abe-e59d-11ec-ba43-dac502259ad0.png

那么我們復(fù)制一個(gè) Deployment 為 StateDeployment,注意,因?yàn)?Deployment 的兩個(gè)屬性,metav1.TypeMetametav1.ObjectMeta分別實(shí)現(xiàn)了不同的方法,如圖所示

adc895a0-e59d-11ec-ba43-dac502259ad0.png

所以在實(shí)現(xiàn)方法時(shí),需要實(shí)現(xiàn)DeepCopyinfo,DeepCopy和繼承接口ObjectDeepCopyObject方法

//DeepCopyIntoisanautogenerateddeepcopyfunction,copyingthereceiver,writingintoout.inmustbenon-nil.
func(in*StateDeployment)DeepCopyInto(out*StateDeployment){
*out=*in
out.TypeMeta=in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
in.Status.DeepCopyInto(&out.Status)
return
}

//DeepCopyisanautogenerateddeepcopyfunction,copyingthereceiver,creatinganewStateDeployment.
func(in*StateDeployment)DeepCopy()*StateDeployment{
ifin==nil{
returnnil
}
out:=new(StateDeployment)
in.DeepCopyInto(out)
returnout
}

//DeepCopyObjectisanautogenerateddeepcopyfunction,copyingthereceiver,creatinganewruntime.Object.
func(in*StateDeployment)DeepCopyObject()runtime.Object{
ifc:=in.DeepCopy();c!=nil{
returnc
}
returnnil
}

那么擴(kuò)展一個(gè)資源的整個(gè)流為:

  • 資源類型在:k8s.io/api/{Group}/types.go
  • 資料類型的實(shí)現(xiàn)接口k8s.io/apimachinery/pkg/runtime/interfaces.go.Object
  • 其中是基于Deployment的類型,metav1.TypeMetametav1.ObjectMeta
  • metav1.TypeMeta實(shí)現(xiàn)了GetObjectKind();metav1.ObjectMeta實(shí)現(xiàn)了 DeepCopyinfo=(),DeepCopy(),還需要實(shí)現(xiàn)DeepCopyObject()
  • 最后注冊(cè)資源到 schema 中k8s.io/api/apps/v1/register.go

審核編輯 :李倩


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

    關(guān)注

    2

    文章

    2375

    瀏覽量

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

    關(guān)注

    7

    文章

    4020

    瀏覽量

    68365

原文標(biāo)題:理解 Kubernetes 的 API Schema

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Oracle數(shù)據(jù)庫(kù)ASM實(shí)例無(wú)法掛載的數(shù)據(jù)恢復(fù)案例

    一個(gè)Oracle數(shù)據(jù)庫(kù)故障表現(xiàn)為ASM磁盤組掉線,ASM實(shí)例無(wú)法掛載(mount)。數(shù)據(jù)庫(kù)管理員自行進(jìn)行簡(jiǎn)單修復(fù),未能成功,隨后聯(lián)系北亞數(shù)據(jù)恢復(fù)中心恢復(fù)數(shù)據(jù)。
    的頭像 發(fā)表于 02-24 15:19 ?85次閱讀
    Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>ASM實(shí)例無(wú)法掛載的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    國(guó)產(chǎn)數(shù)據(jù)庫(kù)的AI戰(zhàn)事

    國(guó)產(chǎn)數(shù)據(jù)庫(kù)硝煙再起,Vastbase V100構(gòu)筑企業(yè)智能基座
    的頭像 發(fā)表于 10-24 20:45 ?4044次閱讀
    國(guó)產(chǎn)<b class='flag-5'>數(shù)據(jù)庫(kù)</b>的AI戰(zhàn)事

    數(shù)據(jù)庫(kù)性能優(yōu)化指南

    作為一名在大廠摸爬滾打多年的運(yùn)維老兵,我見過太多因?yàn)?b class='flag-5'>數(shù)據(jù)庫(kù)性能問題導(dǎo)致的生產(chǎn)事故。今天分享一套完整的數(shù)據(jù)庫(kù)優(yōu)化方法論,從SQL層面到硬件配置,幫你徹底解決性能瓶頸!
    的頭像 發(fā)表于 08-18 11:21 ?754次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—服務(wù)器異常斷電導(dǎo)致Oracle數(shù)據(jù)庫(kù)故障的數(shù)據(jù)恢復(fù)案例

    Oracle數(shù)據(jù)庫(kù)故障: 某公司一臺(tái)服務(wù)器上部署Oracle數(shù)據(jù)庫(kù)。服務(wù)器意外斷電導(dǎo)致數(shù)據(jù)庫(kù)報(bào)錯(cuò),報(bào)錯(cuò)內(nèi)容為“system01.dbf需要更多的恢復(fù)來(lái)保持一致性”。該Oracle數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 07-24 11:12 ?651次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—服務(wù)器異常斷電導(dǎo)致Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>故障的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    三款主流國(guó)產(chǎn)數(shù)據(jù)庫(kù)的技術(shù)特點(diǎn)

    隨著數(shù)字經(jīng)濟(jì)的快速發(fā)展和數(shù)據(jù)安全要求的提升,國(guó)產(chǎn)數(shù)據(jù)庫(kù)正迎來(lái)前所未有的發(fā)展機(jī)遇。在信創(chuàng)浪潮推動(dòng)下,達(dá)夢(mèng)數(shù)據(jù)庫(kù)、TiDB、華為高斯數(shù)據(jù)庫(kù)等國(guó)產(chǎn)數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 07-14 11:08 ?1158次閱讀

    企業(yè)級(jí)MySQL數(shù)據(jù)庫(kù)管理指南

    在當(dāng)今數(shù)字化時(shí)代,MySQL作為全球最受歡迎的開源關(guān)系型數(shù)據(jù)庫(kù),承載著企業(yè)核心業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)與處理。作為數(shù)據(jù)庫(kù)管理員(DBA),掌握MySQL的企業(yè)級(jí)部署、優(yōu)化、維護(hù)技能至關(guān)重要。本文將從實(shí)戰(zhàn)角度出發(fā),系統(tǒng)闡述MySQL在企業(yè)環(huán)
    的頭像 發(fā)表于 07-09 09:50 ?732次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫(kù)文件丟失的數(shù)據(jù)恢復(fù)案例

    MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)操作系統(tǒng)為Windows Server的虛擬機(jī)上部署MongoDB數(shù)據(jù)庫(kù)。 MongoDB數(shù)據(jù)庫(kù)故障: 工作人員在MongoDB服務(wù)仍
    的頭像 發(fā)表于 07-01 11:13 ?644次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—MongoDB<b class='flag-5'>數(shù)據(jù)庫(kù)</b>文件丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫(kù)被加密如何恢復(fù)數(shù)據(jù)?

    SQL Server數(shù)據(jù)庫(kù)故障: SQL Server數(shù)據(jù)庫(kù)被加密,無(wú)法使用。 數(shù)據(jù)庫(kù)MDF、LDF、log日志文件名字被篡改。
    的頭像 發(fā)表于 06-25 13:54 ?683次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—SQL Server<b class='flag-5'>數(shù)據(jù)庫(kù)</b>被加密如何恢復(fù)<b class='flag-5'>數(shù)據(jù)</b>?

    oracle數(shù)據(jù)恢復(fù)—oracle數(shù)據(jù)庫(kù)誤執(zhí)行錯(cuò)誤truncate命令如何恢復(fù)數(shù)據(jù)?

    oracle數(shù)據(jù)庫(kù)誤執(zhí)行truncate命令導(dǎo)致數(shù)據(jù)丟失是一種常見情況。通常情況下,oracle數(shù)據(jù)庫(kù)誤操作刪除數(shù)據(jù)只需要通過備份恢復(fù)數(shù)據(jù)
    的頭像 發(fā)表于 06-05 16:01 ?1127次閱讀
    oracle<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>誤執(zhí)行錯(cuò)誤truncate命令如何恢復(fù)<b class='flag-5'>數(shù)據(jù)</b>?

    SQLSERVER數(shù)據(jù)庫(kù)是什么

    支持在Linux和容器化環(huán)境運(yùn)行。 核心特點(diǎn) 關(guān)系型數(shù)據(jù)庫(kù) 基于SQL(結(jié)構(gòu)化查詢語(yǔ)言)進(jìn)行數(shù)據(jù)操作,支持表、行、列等結(jié)構(gòu)化存儲(chǔ)。 提供ACID(原子性、一致性、隔離性、持久性)事務(wù)支持,確保
    的頭像 發(fā)表于 05-26 09:19 ?1177次閱讀

    MySQL數(shù)據(jù)庫(kù)是什么

    開發(fā)、企業(yè)應(yīng)用和大數(shù)據(jù)場(chǎng)景。以下是其核心特性和應(yīng)用場(chǎng)景的詳細(xì)說明: 核心特性 關(guān)系型數(shù)據(jù)庫(kù)模型 數(shù)據(jù)以 表(Table) 形式組織,表由行(記錄)和列(字段)構(gòu)成。 通過 主鍵、外鍵 實(shí)現(xiàn)表間關(guān)聯(lián),支持復(fù)雜查詢和事務(wù)處理。 示例
    的頭像 發(fā)表于 05-23 09:18 ?1224次閱讀

    HarmonyOS5云服務(wù)技術(shù)分享--云數(shù)據(jù)庫(kù)使用指南

    ? 華為云數(shù)據(jù)庫(kù)(CloudDB)在HarmonyOS的使用指南 ? ??嗨,開發(fā)者朋友們!?? 今天咱們來(lái)聊聊華為云數(shù)據(jù)庫(kù)(CloudDB)在HarmonyOS應(yīng)用的集成和使用技
    發(fā)表于 05-22 18:29

    SEGGER emFile支持大型數(shù)據(jù)庫(kù)

    SEGGER宣布emFile對(duì)大型數(shù)據(jù)庫(kù)的支持,集成了SQLite,方便與SEGGER的BigFAT和微軟的exFAT一起使用。
    的頭像 發(fā)表于 04-23 15:51 ?788次閱讀

    分布式存儲(chǔ)數(shù)據(jù)恢復(fù)—虛擬機(jī)上hbase和hive數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)案例

    分布式存儲(chǔ)數(shù)據(jù)恢復(fù)環(huán)境: 16臺(tái)某品牌R730xd服務(wù)器節(jié)點(diǎn),每臺(tái)服務(wù)器節(jié)點(diǎn)上有數(shù)臺(tái)虛擬機(jī)。 虛擬機(jī)上部署Hbase和Hive數(shù)據(jù)庫(kù)。 分布式存儲(chǔ)故障: 數(shù)據(jù)庫(kù)底層文件被誤刪除,數(shù)
    的頭像 發(fā)表于 04-17 11:05 ?726次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫(kù)文件拷貝后服務(wù)無(wú)法啟動(dòng)的數(shù)據(jù)恢復(fù)

    MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)Windows Server操作系統(tǒng)虛擬機(jī)上部署MongoDB數(shù)據(jù)庫(kù)。 MongoDB數(shù)據(jù)庫(kù)故障: 管理員在未關(guān)閉MongoDB服務(wù)的
    的頭像 發(fā)表于 04-09 11:34 ?873次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)——MongoDB<b class='flag-5'>數(shù)據(jù)庫(kù)</b>文件拷貝后服務(wù)無(wú)法啟動(dòng)的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)