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

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

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

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

抽絲剝繭探窮境!一次數(shù)據(jù)庫JSON字段的深度使用實踐

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2026-03-18 11:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

背景

在我們系統(tǒng)中,承接多種行業(yè),多種商家的,多個業(yè)務(wù)條線,不同場景的的不同業(yè)務(wù)訴求,在實現(xiàn)上將個性和通用字段隔離,通用字段是所有條線通用邏輯所共用的標(biāo)準(zhǔn)字段,對于個別條線的個性化訴求,則通過個性化擴展字段來實現(xiàn)。

通用字段,作用于通用邏輯,所有條線走到相應(yīng)功能時,會對通用字段讀寫。而對于個性擴展字段而言,只有用到個性化功能時,才會對個性化擴展字段進行賦值。在數(shù)據(jù)庫持久化存儲上,用不到該個性化擴展字段時,該字段無需存儲,不占用額外存儲空間。

wKgZO2m6GEyASylUAAgwWgZtkFk500.png

在表結(jié)構(gòu)上,使用JSON類型字段進行存儲。在日常擴展字段的開發(fā)過程中,不可避免的用到JSON函數(shù)進行字段處理。

?

常用JSON函數(shù)一覽

Name Description
-> Return value from JSON column after evaluating path; equivalent to JSON_EXTRACT().
->> Return value from JSON column after evaluating path and unquoting the result; equivalent to JSON_UNQUOTE(JSON_EXTRACT()).
JSON_APPEND() Append data to JSON document
JSON_ARRAY() Create JSON array
JSON_ARRAY_APPEND() Append data to JSON document
JSON_ARRAY_INSERT() Insert into JSON array
JSON_CONTAINS() Whether JSON document contains specific object at path
JSON_CONTAINS_PATH() Whether JSON document contains any data at path
JSON_DEPTH() Maximum depth of JSON document
JSON_EXTRACT() Return data from JSON document
JSON_INSERT() Insert data into JSON document
JSON_KEYS() Array of keys from JSON document
JSON_LENGTH() Number of elements in JSON document
JSON_MERGE() Merge JSON documents, preserving duplicate keys. Deprecated synonym for JSON_MERGE_PRESERVE()
JSON_MERGE_PATCH() Merge JSON documents, replacing values of duplicate keys
JSON_MERGE_PRESERVE() Merge JSON documents, preserving duplicate keys
JSON_OBJECT() Create JSON object
JSON_PRETTY() Print a JSON document in human-readable format
JSON_QUOTE() Quote JSON document
JSON_REMOVE() Remove data from JSON document
JSON_REPLACE() Replace values in JSON document
JSON_SEARCH() Path to value within JSON document
JSON_SET() Insert data into JSON document
JSON_STORAGE_SIZE() Space used for storage of binary representation of a JSON document
JSON_TYPE() Type of JSON value
JSON_UNQUOTE() Unquote JSON value
JSON_VALID() Whether JSON value is valid

?

JSON字段實現(xiàn)項目場景訴求典型案例分析

JSON字段對我們系統(tǒng)來說并不陌生,有不少場景使用,下面有一些典型的使用場景案例先放出來作為JSON字段項目使用背景鋪墊一下。

?

擴展字段的存儲和查詢

動態(tài)擴展查詢案例

在二手庫或逆向條件,有比較多的擴展屬性,其他條線缺沒有這些屬性值,這些屬性以JSON擴展的方式存儲。

下面是一個JSON擴展字段的JSON數(shù)據(jù)示例:

{
    "ppCode": "PPDA4302865239B10F",
    "zoneNo": "STAGE-OUTBOUND",
    "zoneName": "出庫暫存區(qū)",
    "zoneType": "t",
    "extendMap": {
        "cid1": 13765,
        "cid2": 14192,
        "cid3": 14533,
        "deptId": "1",
        "jdFlag": 1,
        "symbol": 300,
        "brandId": 52368,
        "cbjPrice": 2034,
        "salesPin": "xumingchen",
        "commonType": 0,
        "wareSource": 100,
        "orderSource": "it100",
        "supplierCode": "lgde",
        "outTransferId": "1284009718",
        "inboundSourceType": 100,
        "purchaseChannelId": "1001"
    },
    "storeCode": "",
    "sourceModule": "wms-pick",
    "isolationZone": false,
    "stageZoneType": "OUTBOUND"
}

?

這些擴展字段支持作為查詢條件過濾庫存,用于出庫建單。

在服務(wù)層面為了支持動態(tài)增減的屬性條件,條件字段定義為Map類型,與 JSON 字段中的 extendMap 所對應(yīng)。

?

wKgZO2m6GE6AE-IrAAXEE0I9C1A246.png

?

?

list查詢條件的特殊預(yù)處理

wKgZO2m6GE-ANnrnAAF8OT89gTQ856.png

?

SQL層面的動態(tài)查詢效果:

wKgZO2m6GFCAaAMFAAI-FKBKdGQ233.png

?

元素包含條件使用案例

設(shè)備組條件

wKgZPGm6GFGAC-CMAAHQ8ksCVRM305.png

?

批屬性條件

wKgZPGm6GFKASu5RAAFvh5qQL4I355.png

?

序列號條件

wKgZPGm6GFOAD3wRAACFDvmSDOk581.png

?

?

數(shù)值管理深度剖析案例

案例背景

在現(xiàn)有的場景中,目前僅華冠場景支持重量庫存,其他條線暫無庫存管理。在本案例中,重量庫存通過個性化擴展字段實現(xiàn),JSON類型。

JSON類型的字段名是 extend_content,其中重量字段 stockWeight 的 JSON path是 $.stockInfo.stockWeight 。

stockInfo 的內(nèi)容示例如下:

{
    "businessNo": "OT2008735812539129856",
    "stockWeight": 630,
    "businessType": "WMS_PICK",
    "businessTypeName": "出庫揀貨"
}

?

增減重量庫存

單行更新

wKgZO2m6GFOAcuKgAACZ_41Fks8397.png

?

通過CASE WHEN THEN 方式批量更新JSON字段中的重量庫存

wKgZO2m6GFSAMGtrAAGGm8431dc169.png

?

剝繭第一層

?

在調(diào)試中,發(fā)現(xiàn)JSON字段,如果想要通過 json_set 賦值,必須依賴于該字段不能為null,如果json_set 該JSON字段值為null,則更新不上,不會產(chǎn)生SQL語法錯誤。

?

對于存量的歷史null值字段統(tǒng)計,并做一次初始化。

?

初始化歷史數(shù)據(jù)

統(tǒng)計JSON字段extend_content值為null 的數(shù)據(jù)

wKgZPGm6GFWAZ-7fAAMOCp0pL1Q356.png

?

將 extend_content 為 null 的進行初始化

wKgZPGm6GFaAL10KAAC_hTxa3kg424.png

?

wKgZPGm6GFeAcQYBAADNCGNGIdo529.png

?

統(tǒng)計JSON字段extend_content值不為null,但其中的stockInfo為null的數(shù)據(jù)

wKgZPGm6GFiAWs7TAAOMVvtHIGs285.png

?

?

將 extend_content.stockInfo 為 null 的數(shù)據(jù)進行初始化

wKgZPGm6GFiAdgf5AAD3sjmsHzM296.png

?

對存量的歷史數(shù)據(jù)初始化完畢,考慮到某些場景可能還會持續(xù)產(chǎn)生 JSON 字段 null值情況,考慮在代碼中進行兼容,如果想在 JSON 字段中進行 json_set,SQL進行檢查并自動進行前置初始化。

wKgZPGm6GFmAWv4VAAG1lMG0P-Y208.png

?

以上SQL,通過JSON_OBJECT函數(shù)將null值的JSON字段,初始化為一個空J(rèn)SON對象,肉眼看上去是 {}。

?

剝繭第二層

?

除了上面歷史null值的JSON字段外,還發(fā)現(xiàn)一個更為復(fù)雜的場景,JSON字段更新前不為null,但是本次賦值更新操作卻導(dǎo)致JSON字段整體變成了null,匪夷所思!

?

單行更新方式因為是一次是更新一行,沒有問題。

批量更新,如果所有的明細(xì)stockWeight字段都有值,更新也沒問題。如果一次批量更新的明細(xì)中,有的stockWeight字段有值,有的沒有值,則更新會有問題,不會出現(xiàn)SQL語法錯誤,但是整個extend_content JSON字段會被錯誤地更新為null。

?

wKgZPGm6GFqADBBBAAmqXq-sTuU060.png

?

在測試環(huán)境中,調(diào)試的一個入?yún)⑷缦拢?/p>

{
  "requestHeader": {
    "sourceModule": "inventory",
    "requestIp": "11.50.45.137",
    "warehouseNo": "6_6_618",
    "businessType": "INV-CHANGE-PROFIT-LOSS",
    "businessTypeName": "盤盈虧",
    "businessNo": "CP2009231067168407553",
    "uuid": "wms.inv.change.profit.6_6_618.CP2009231067168407553.2009231067554283520.12",
    "operator": "guozhongqiang5"
  },
  "increaseStockDetailList": [
    {
      "detailBusinessNo": "DPPT20092299369586442242",
      "stockLocationIndicator": {
        "locationNo": "01",
        "containerLevel1": "",
        "containerLevel2": ""
      },
      "stockSkuIndicator": {
        "sku": "EMG172002001",
        "lotNo": "-1",
        "skuLevel": "100",
        "packCode": "8c59689e8972a14e4883b0ea755b3702",
        "ownerNo": "EBU4398046536982"
      },
      "increaseOperateType": "normalIncrease",
      "stockQty": 1.0000,
      "recommendLocationNo": "",
      "externalNo": "CP2009231067168407553",
      "uniqueStockList": [],
      "reason": {}
    },
    {
      "detailBusinessNo": "DPPT2009229936958644224",
      "stockLocationIndicator": {
        "locationNo": "01",
        "containerLevel1": "",
        "containerLevel2": ""
      },
      "stockSkuIndicator": {
        "sku": "EMG172002003",
        "lotNo": "-1",
        "skuLevel": "100",
        "packCode": "8c59689e8972a14e4883b0ea755b3702",
        "ownerNo": "EBU4398046536982"
      },
      "increaseOperateType": "normalIncrease",
      "stockQty": 0.0000,
      "stockWeight": 3000,
      "recommendLocationNo": "",
      "externalNo": "CP2009231067168407553",
      "uniqueStockList": [],
      "reason": {}
    }
  ]
}

?

wKgZO2m6GFuAa1rgAAG9kw4sDYE167.png

?

wKgZO2m6GFyAIvN9AAHNDydUbWk806.png

?

我們可以看到,上面這個入?yún)⒂袃蓚€明細(xì),對應(yīng)的SKU分別是EMG172002001 和 EMG172002003。第一個明細(xì)只有stockQty字段無stockWeight字段,第二個同時有stockQty字段,和stockWeight字段,stockWeight值為 3000。

?

此時,批量更新形成的SQL如下:

UPDATE
	st_stock
set
	stock_qty =
	case
		WHEN deleted = 0
			AND warehouse_no = '6_6_618'
			AND id = 2008872347100020736
			AND status = 0
		THEN stock_qty + 1.0000
		WHEN deleted = 0
			AND warehouse_no = '6_6_618'
			AND id = 2008872388812374016
			AND status = 0
		THEN stock_qty + 0.0000
	end,
	extend_content =
	case
    
		WHEN deleted = 0
			AND warehouse_no = '6_6_618'
			AND id = 2008872388812374016
			AND status = 0
		THEN JSON_SET(COALESCE(extend_content, '{}'), '$.stockInfo', COALESCE(JSON_EXTRACT(extend_content, '$.stockInfo'), JSON_OBJECT()))
        ELSE extend_content
        
	end,
	extend_content =
	case
		WHEN deleted = 0
			AND warehouse_no = '6_6_618'
			AND id = 2008872388812374016
			AND status = 0
		THEN json_set(extend_content, '$.stockInfo.stockWeight', IFNULL(extend_content ->> '$.stockInfo.stockWeight', 0) + IFNULL(3000.0, 0))
	end,
	update_time = now(),
	version = version + 1,
	update_user = 'guozhongqiang5',
	extend_content = json_set(extend_content, '$.stockInfo.businessType', 'INV-CHANGE-PROFIT-LOSS', '$.stockInfo.businessTypeName', '盤盈虧', '$.stockInfo.businessNo', 'CP2009231067168407553333')
WHERE
	(
		deleted = 0
		AND warehouse_no = '6_6_618'
		AND id = 2008872347100020736
		AND status = 0
	)
	or
	(
		deleted = 0
		AND warehouse_no = '6_6_618'
		AND id = 2008872388812374016
		AND status = 0
	)

?

問題出現(xiàn)下圖圈紅的部分:

wKgZO2m6GF2AAkEYAAIjhVvveE8793.png

?

wKgZO2m6GF6ACsupAASegvwWLrY595.png

?

在上面的場景中,一次批量更新有兩個明細(xì),其中一個因為stockWeight為null,不會被動態(tài)拼接到SQL中,這個無對應(yīng)的 WHEN THEN 則 extend_content 被置為null,另一個明細(xì)因為有 WHEN THEN 則賦值正常。

?

此時直觀的想法是,既然因為stockWeight為null的明細(xì)走不上 WHEN THEN ,何不通過 ELSE 賦值為extend_content 本身來解決呢。按此思路進行代碼調(diào)整如下:

?

wKgZPGm6GF-APggSAAHCCSdRVXM857.png

?

調(diào)試明細(xì)stockWeigh不為空,驗證通過。

?

剝繭第三層

?

但是,當(dāng)所有明細(xì)stockWeight為null的時候,因為 ELSE extend_content 在 if條件滿足的時候才會動態(tài)拼接,當(dāng),此時 WHEN THEN 和 ELSE都不會拼接進去,語法不通過。

?

那么,把 ELSE extend_content 從 if 條件判斷拿出來,放在 end的前面總可以了吧。

?

wKgZPGm6GGCAbzsaAAG2F7g-1RA139.png

?

這里借助 foreach 的 close 來拼接 ELSE extend_content 語句。

?

在測試環(huán)境驗證時,當(dāng)更新入?yún)⒅辽僖粋€明細(xì)中的 stockWeight 不為null時,確實沒問題。當(dāng)所有明細(xì)的stockWeight都為null時,新的問題來了,報錯信息及分析過程如下:

?

### The error occurred while setting parameters
### SQL: UPDATE st_stock set stock_qty=case WHEN deleted = 0 AND warehouse_no = ? AND id = ? and stock_qty >= ? * -1 THEN stock_qty + ? WHEN deleted = 0 AND warehouse_no = ? AND id = ? and stock_qty >= ? * -1 THEN stock_qty + ? end, diff_qty=case WHEN deleted = 0 AND warehouse_no = ? AND id = ? and diff_qty >= ? * -1 THEN diff_qty + ? WHEN deleted = 0 AND warehouse_no = ? AND id = ? and diff_qty >= ? * -1 THEN diff_qty + ? end, extend_content=case ELSE extend_content end, extend_content=case ELSE extend_content end, update_time = now() , version = version + 1 , update_user = ? , extend_content = json_set(extend_content, ?, ?, ?, ?, ?, ?) WHERE ( deleted = 0 AND warehouse_no = ? AND id = ? and diff_qty >= ? * -1 AND status = 0 ) or ( deleted = 0 AND warehouse_no = ? AND id = ? and diff_qty >= ? * -1 AND status = 0 ) /* [SQLMarking] statementId: com.jdwl.wms.stock.infrastructure.jdbc.main.dao.StockOperationDao.simpleDecreaseDiffQty */
### Cause: com.jdbc.exceptions.jdbc4.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your SQL server version for the right syntax to use near 'ELSE extend_content end,
extend_content=case ELSE extend_content' at line 36
; bad SQL grammar []; nested exception is com.sql.jdbc.exceptions.jdbc4.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your SQL server version for the right syntax to use near 'ELSE extend_content end,

?

wKgZO2m6GGGALk_-AAMF7Qgs08I675.png

?

入?yún)?/p>

{
    "requestHeader": {
        "sourceModule": "inventory",
        "requestIp": "11.158.12.73",
        "warehouseNo": "6_6_618",
        "businessType": "INV-PROFIT-LOSS-TRANSFER-STOCK-MATCH",
        "businessTypeName": "盤盈、盤虧單預(yù)占轉(zhuǎn)移",
        "businessNo": "CL2009892868717576192",
        "uuid": "wms.inv.change.lock.transfer.loss.6_6_618.2009892868977623040.0",
        "operator": "guozhongqiang5"
    },
    "stockLockTransformType": "difference2Change",
    "stockLockTransformDetailList": [
        {
            "srcBusinessNo": "DPPT2009892261415911424",
            "destBusinessNo": "CL2009892868717576192",
            "stockSkuIndicator": {
                "sku": "EMG172002002",
                "lotNo": "-1",
                "skuLevel": "100",
                "packCode": "8c59689e8972a14e4883b0ea755b3702",
                "ownerNo": "EBU4398046536982"
            },
            "stockLocationIndicator": {
                "locationNo": "01",
                "containerLevel1": "",
                "containerLevel2": ""
            },
            "qty": 2
        },
        {
            "srcBusinessNo": "DPPT2009892261415911424",
            "destBusinessNo": "CL2009892868717576192",
            "stockSkuIndicator": {
                "sku": "EMG172002004",
                "lotNo": "-1",
                "skuLevel": "100",
                "packCode": "8c59689e8972a14e4883b0ea755b3702",
                "ownerNo": "EBU4398046536982"
            },
            "stockLocationIndicator": {
                "locationNo": "01",
                "containerLevel1": "",
                "containerLevel2": ""
            },
            "qty": 4
        }
    ],
    "serialLockTransformDetailList": [

    ]
}

入?yún)⒈旧頉]什么問題,是符合要求的入?yún)ⅲ瑥谋敬涡枨蟮奶卣魃蟻砜粗皇菦]有重量字段,重量字段非必填,也不是必須的,在很多場景下也不涉及重量庫存的變化。

?

數(shù)據(jù)

wKgZPGm6GGKAcVcxAAFbk2O7DOg523.png

?

數(shù)據(jù)庫中的待更新數(shù)據(jù)本身也沒有問題。

到這里,已經(jīng)確認(rèn)入?yún)⑹钦鼍?,待更新?shù)據(jù)也沒問題,是SQL本身存在問題。

?


    
        
            WHEN
            
            THEN json_set(extend_content, #{item.stockWeightJsonPath, jdbcType=VARCHAR}, IFNULL(extend_content ->> #{item.stockWeightJsonPath, jdbcType=VARCHAR}, 0) + IFNULL(#{item.stockWeight, jdbcType=DECIMAL}, 0))
        
    


?

結(jié)合代碼來看,入?yún)tockWeight為null,則 if 條件里的 WHEN THEN 拼不進去,但 close 部分的 ELSE extend_content 可以拼入,結(jié)合前面prefix的 extend_content=case 和 suffix 的 end, 連在一起就是:

extend_content=case ELSE extend_content end,

顯然,這個語法不通過的。

?

解決方法也比較簡單,就是把 ELSE 語句改成 WHEN THEN 語句,具體如下:

wKgZO2m6GGOAYuCkAAHIEd9zH8k422.png

?

這樣即使if語句不拼接進去,整體拼出來的語句如下,也是符合預(yù)期的:

extend_content=case WHEN 1=1 THEN extend_content end,

至此,批量更新所有明細(xì)全有stockWeight,全無stockWeight,部分有部分無stockWeight的場景,均已支持完畢。

?

再來一層

?

回過頭看,還有另外一個思路處理更為簡單,不用 CASE WHEN THEN 方式新寫一個批量更新方法:

wKgZPGm6GGSAF5XDAAUl65OkAzg621.png

?

這種批量更新方式,依賴于開啟 allowMultiQueries :

wKgZO2m6GGSAIeyRAACcbBnUvqo297.png

?

不禁感慨,條條大路通羅馬,并非所有的路都一帆風(fēng)順,但我們終究抵達(dá)終點。

wKgZPGm6GGWAVBaYAAKPsE371zs96.jpeg



審核編輯 黃宇

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

    關(guān)注

    7

    文章

    4033

    瀏覽量

    68408
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    不用編程不用聯(lián)網(wǎng),快速實現(xiàn)PLC與數(shù)據(jù)庫雙向數(shù)據(jù)通訊的案例

    ?IGT-SER系列智能網(wǎng)關(guān)方便實現(xiàn)多臺PLC與SQL數(shù)據(jù)庫之間的數(shù)據(jù)通訊,既可以讀取PLC的數(shù)據(jù)上報到數(shù)據(jù)庫,也可以從數(shù)據(jù)庫查詢
    發(fā)表于 01-14 10:51

    2025開放原子開發(fā)者大會AI時代數(shù)據(jù)庫創(chuàng)新實踐分論壇成功舉辦

    、PikiwiDB、IvorySQL、GreatSQL、Milvus等主流開源數(shù)據(jù)庫社區(qū)核心技術(shù)專家,聚焦數(shù)據(jù)庫與大模型深度融合的技術(shù)趨勢與實踐路徑,展開干貨滿滿的
    的頭像 發(fā)表于 11-27 14:56 ?616次閱讀

    數(shù)據(jù)庫慢查詢分析與SQL優(yōu)化實戰(zhàn)技巧

    今天,我將分享我在處理數(shù)千次數(shù)據(jù)庫性能問題中積累的實戰(zhàn)經(jīng)驗,幫助你系統(tǒng)掌握慢查詢分析與SQL優(yōu)化的核心技巧。無論你是剛?cè)腴T的運維新手,還是有定經(jīng)驗的工程師,這篇文章都將為你提供實用的解決方案。
    的頭像 發(fā)表于 09-08 09:34 ?1046次閱讀

    智能客服驅(qū)動效率和體驗升級,上海電信+昇騰AI的一次民生應(yīng)用實踐

    上海電信+昇騰AI的一次民生應(yīng)用實踐
    的頭像 發(fā)表于 07-30 23:44 ?2966次閱讀
    智能客服驅(qū)動效率和體驗升級,上海電信+昇騰AI的<b class='flag-5'>一次</b>民生應(yīng)用<b class='flag-5'>實踐</b>

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

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

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

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

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

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

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

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

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

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

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

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

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

    SQL Server 是由微軟公司開發(fā)的款 關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS) ,用于存儲、管理和檢索結(jié)構(gòu)化數(shù)據(jù)。它是企業(yè)級應(yīng)用中廣泛使用的數(shù)據(jù)庫解決方案之
    的頭像 發(fā)表于 05-26 09:19 ?1196次閱讀

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

    MySQL數(shù)據(jù)庫種 開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS) ,由瑞典MySQL AB公司開發(fā),后被Oracle公司收購。它通過結(jié)構(gòu)化查詢語言(SQL)進行數(shù)據(jù)存儲、管理和操作,廣
    的頭像 發(fā)表于 05-23 09:18 ?1269次閱讀

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

    ??: 敏感數(shù)據(jù)啟用字段級加密(如用戶手機號)。 ? ??總結(jié)?? 華為云數(shù)據(jù)庫(CloudDB)讓HarmonyOS應(yīng)用的數(shù)據(jù)管理變得輕松又高效!通過本文的代碼示例和技巧,相信你已
    發(fā)表于 05-22 18:29

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

    MongoDB數(shù)據(jù)庫數(shù)據(jù)恢復(fù)環(huán)境: 臺Windows Server操作系統(tǒng)虛擬機上部署MongoDB數(shù)據(jù)庫。 MongoDB數(shù)據(jù)庫
    的頭像 發(fā)表于 04-09 11:34 ?900次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)——MongoDB<b class='flag-5'>數(shù)據(jù)庫</b>文件拷貝后服務(wù)無法啟動的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)

    中興通訊GoldenDB數(shù)據(jù)庫助力首個住房公積金國產(chǎn)數(shù)據(jù)庫聯(lián)合實驗室落地?fù)P州

    近日,江蘇省住房公積金領(lǐng)域迎來則重磅消息!揚州市住房公積金管理中心與中興通訊GoldenDB數(shù)據(jù)庫簽署戰(zhàn)略合作協(xié)議,共同揭牌成立江蘇省住房公積金聯(lián)合實驗室。 此次合作標(biāo)志著國內(nèi)首個聚焦住房公積金
    的頭像 發(fā)表于 04-07 18:26 ?1239次閱讀