一、on duplicatekey update有什么優(yōu)缺點(diǎn)
ON DUPLICATE KEY UPDATE 語(yǔ)法的特點(diǎn):
1.MySQL私有語(yǔ)法,非SQL92標(biāo)準(zhǔn)語(yǔ)法。
2.MySQL自身通過(guò)少數(shù)鍵的查找進(jìn)行數(shù)據(jù)排重,并決定INSERT或UPDATE。
以下將 ON DUPLICATE KEY UPDATE 和 原子操作SELECT+INSERT or UPDATE 的方案進(jìn)行對(duì)比分析:
優(yōu)點(diǎn):
1.減少網(wǎng)絡(luò)連接開(kāi)銷,總體效率上也會(huì)略高。(具體高多少需要實(shí)驗(yàn)數(shù)據(jù)支撐)
2.代碼上書(shū)寫(xiě)簡(jiǎn)潔、方便。對(duì)已有表批量插入新數(shù)據(jù)時(shí)尤其方便。
缺點(diǎn):
1.遷移數(shù)據(jù)層產(chǎn)品時(shí)造成極大的麻煩,需要付出大量成本去改寫(xiě)代碼。如MySQL遷移PostgreSQL。
2.業(yè)務(wù)邏輯分散在應(yīng)用邏輯層和數(shù)據(jù)層,對(duì)項(xiàng)目維護(hù)留下隱患。
這部分的業(yè)務(wù)邏輯其實(shí)由 應(yīng)用層使用特殊語(yǔ)法 和 數(shù)據(jù)層使用少數(shù)鍵 去保證整個(gè)邏輯正常運(yùn)作。如果由于項(xiàng)目維護(hù)工作上的疏忽、人員/部門間(多數(shù)企業(yè)中以上兩層分屬研發(fā)和運(yùn)維部門)協(xié)調(diào)失誤,就有可能造成業(yè)務(wù)上重大故障。
個(gè)人的一些思考和想法:
1.在工程中是否可以使用ON DUPLICATE KEY UPDATE?
對(duì)于大部分業(yè)務(wù),生存周期可能5年到8年;而從目前來(lái)看,MySQL在開(kāi)源、關(guān)系型數(shù)據(jù)庫(kù)的應(yīng)用場(chǎng)景中地位無(wú)可撼動(dòng)。在綜合考慮項(xiàng)目遷移和維護(hù)成本后,個(gè)人覺(jué)得還是可以使用的。但是總體上還是傾向于不使用。
延伸閱讀:
二、信息抽取是什么
信息抽取(infromation extraction)信息抽取是一種自動(dòng)化地從半結(jié)構(gòu)化和無(wú)結(jié)構(gòu)數(shù)據(jù)中抽取實(shí)體、關(guān)系以及實(shí)體屬性等結(jié)構(gòu)化信息的技術(shù)。關(guān)鍵技術(shù)包括:實(shí)體抽取、關(guān)系抽取和屬性抽取。
1、實(shí)體抽取,也稱為命名實(shí)體識(shí)別(named entity recognition,NER),是指從文本數(shù)據(jù)集中自動(dòng)識(shí)別出命名實(shí)體。
當(dāng)前主流技術(shù)為面向開(kāi)放域(open domain)的實(shí)體抽取。
2、關(guān)系抽取,為了得到語(yǔ)義信息,從相關(guān)語(yǔ)料中提取出實(shí)體之間的關(guān)聯(lián)關(guān)系,通過(guò)關(guān)系將實(shí)體聯(lián)系起來(lái),才能夠形成網(wǎng)狀的知識(shí)結(jié)構(gòu)。其技術(shù)研究已經(jīng)從早期的“人工構(gòu)造語(yǔ)法和語(yǔ)義規(guī)則”(模式匹配),“統(tǒng)計(jì)機(jī)器學(xué)習(xí)”發(fā)展到“面向開(kāi)放域的信息抽取方法”與“面向封閉領(lǐng)域的方法”相結(jié)合。
3、屬性抽取,目標(biāo)是從不同信息源中采集特定實(shí)體的屬性信息,如針對(duì)某個(gè)公眾人物,可以從網(wǎng)絡(luò)公開(kāi)信息中得到其昵稱、生日、國(guó)籍、教育背景等信息。采用數(shù)據(jù)挖掘的方法直接從文本中挖掘?qū)嶓w屬性和屬性值之間的關(guān)系模式,據(jù)此實(shí)現(xiàn)對(duì)屬性名和屬性值在文本中的定位。