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