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