主頁 > 資料庫 > neo4j基礎-常用cql

neo4j基礎-常用cql

2020-09-28 21:36:47 資料庫

cypher :一種宣告式圖查詢語言,表達高效查詢和更新圖資料庫,

一、基礎知識

1、基礎概念

變數:用于參考搜索模式(pattern),變數可以忽略,如果不需要參考;

節點:物件,可帶若干key-value屬性,可帶標簽;

關系:連接節點(有型別、帶方向),可帶若干名key-value屬性;

標簽:label沒有屬性,

2、屬性訪問:可以通過.訪問;

3、常規運算:

(1)常規運算 DISTINCT, ., []

(2)算數運算 +, -, *, /, %, ^

(3)比較運算 =, <>, <, >, <=, >=, IS NULL, IS NOT NULL

(4)邏輯運算 AND, OR, XOR(異或), NOT

(5)字串操作 +

(6)List操作 +, IN, [x], [x .. y], not actor in

(7)正則操作 =~ //后面可使用正則運算式匹配規則

(8)字串匹配 STARTS WITH, ENDS WITH, CONTAINS

(9)示例:

(9.1)XOR使用

MATCH (n) WHERE n.name = 'Peter' XOR (n.age < 30 AND n.name = "Tobias") OR NOT (n.name = "Tobias" OR n.name="Peter") RETURN n

(9.2)CONTAINS使用

MATCH (n:ResNode)-[r:INSTANCE_OF]->(m:ResourceTypeNode) WHERE m.typeNum IN {resTypeNums} AND n.discarded <> true AND m.discarded <> true AND n.props.areaPropKey CONTAINS {areaCode} RETURN n

(9.3)in使用

match (n:Template) where n.id in ['templateLabel_QP42X','templateLabel_network','templateLabel_ziEzh'] return n

二、cypherQL 基礎

0、節點:

0.1)、創建節點

單個節點 create (n)

創建帶一個標簽的節點 create (n:Person { name: 'Tom Hanks', born: 1956 }) return n;

創建帶兩個標簽的節點 create (n:Person:Student)

回傳創建的節點 create (a{name:"tom"}) return a;

0.2)、查詢節點

match(n) return n;//查詢所有節點

match(n) where n.born<1955 return n;//查詢符合條件(通過where子句添加條件)的節點

match(n:Movie) return n;//查詢具有標簽的節點

match(n{name:'Tom Hanks'}) return n;//查詢具有屬性的節點

1、關系:

1)開始節點-[變數名:關系型別{key:value}]->結束節點,創建關系時,必須指定關系型別;

2) -- 有關系 --> <--有方向的關系

3)  創建關系 create (a)-[r:RELATION]->(b) return r; match (a:Person),(b:Person) where a.name="zhang" and b.name="lisi";

  創建關系的同時設定屬性 create (a)-[r:RELATION{name:a.name+"<->"+b.name}]->(b) return r;

  完整創建:三個關系兩個節點 create p=(an{name:"an"})-[:WORKS_AT]->(neo)<[:WORKS_AT]-(match{name:"tom"}) return p;

4) set

更新一個節點和關系的標簽或屬性 更改屬性 match (n{name:"tom"}) set n.name="tom1" return n;

設定多個屬性:MATCH (n { name: 'Andres' }) SET n.position = 'Developer', n.surname = 'Taylor'

洗掉屬性 match (n{name:"tom"}) set n.name=null return n;

更改標簽 match (n{name:"tom"}) set n:Label return n; match (n{name:"tom"}) set n:Label1:Label2 return n;

//節點和關系之間復制屬性 在節點和關系之間復制屬性:MATCH (at { name: 'Andres' }),(pn { name: 'Peter' }) SET at = pn RETURN at, pn;

FOREACH: 為所有節點設定mark屬性:MATCH p =(begin)-[*]->(END ) WHERE begin.name='A' AND END .name='D' FOREACH (n IN nodes(p)| SET n.marked = TRUE )

5) 洗掉

5.1)洗掉節點和關系 delete

洗掉單個節點 match (n:Label) delete n;

洗掉節點和連接它的關系 match (n{name:"tom"})-[r]-() delete n,r;

只洗掉關系 match (n{name:"tom"})-[r]-() delete r;

洗掉所有節點和關系(慎用)match(n) optional match (n)-[r]-() delete n,r;

洗掉節點及其關系 MATCH (n:Department{name: "test",alias: ""}) DETACH DELETE n

5.2)洗掉標簽和屬性 remove

洗掉屬性 match (n{name:"tom"}) remove n.age return n;

洗掉標簽 match (n:{name:"tom"}) remove n:Label return n;

洗掉多重標簽 match (n:{name:"tom"}) remove n:Label:Label1 return n;

注:set也可以洗掉屬性 match (n:User{name:'jack'}) set n.name = null return n;

6)match

//查詢所有節點 match (n) return n;

//查詢指定標簽的節點 match(n)--(m:Movie) return n; MATCH (n:templatelabel2) RETURN n LIMIT 25;

//關聯節點 match (person{name:'tom'})--(movie) return movie;

//關聯標簽 match (person{name:'tom'})--(movie:Movie) return movie;

//關系查詢 match (person{name:'tom'})-->(movie) return movie;

match (person{name:'tom'})-[r]->(movie) return r;

match (:Person(name:'tom'))-[r]->(Movie) return r,type(r);//回傳關系型別

查詢特定的關系,通過[variable:RelationshipType{key:value}]指定關系的型別和屬性

match (:Person{name:tom})-[r:ACTED_IN(roles:'forrest')]->(movie) return r,type(r);

6.1) where子句

過濾標簽:MATCH (n) WHERE n:Swedish RETURN n

過濾屬性:MATCH (n) WHERE n.age < 30 RETURN n

正則/模糊查詢:MATCH (n) WHERE n.name =~ 'Tob.' RETURN n

使用NOT:MATCH(persons),(peter { name: 'Peter' }) WHERE NOT (persons)-->(peter) RETURN persons

使用屬性:MATCH (n) WHERE (n)-[:KNOWS]-({ name:'Tobias' }) RETURN n

關系型別:MATCH (n)-[r]->() WHERE n.name='Andres' AND type(r)=~ 'K.' RETURN r

使用IN:MATCH (a) WHERE a.name IN ["Peter", "Tobias"] RETURN a

過濾NULL:MATCH (person) WHERE person.name = 'Peter' AND person.belt IS NULL RETURN person

使用NOT...IN: MATCH (n:ResNode)-[r:INSTANCE_OF]->(m:ResourceTypeNode) where not m.typeNum in ["USER","ORG"] return count(n)

6.2)START

START n=node:nodes(name = "A") RETURN n

START r=relationship:rels(name = "LISI") RETURN r

START n=node:nodes("name:A") RETURN n

6.3)聚合函式

count:MATCH (n { name: 'A' })-->(x) RETURN n, count(*)

sum:MATCH (n:Person) RETURN sum(n.property)

avg:MATCH (n:Person) RETURN avg(n.property)

max:MATCH (n:Person) RETURN max(n.property)

min:MATCH (n:Person) RETURN min(n.property)

6.4)常規函式

return

回傳一個節點:match (n {name:"B"}) return n;

回傳一個關系:match (n {name:"A"})-[r:KNOWS]->(c) return r;

回傳一個屬性:match (n {name:"A"}) return n.name;

回傳所有節點:match p=(a {name:"A"})-[r]->(b) return *;

列別名: match (a {name:"A"}) return a.age as thisisage;

運算式: match (a {name:"A"}) return a.age >30 ,"literal",(a)-->();

唯一結果:match (a {name:"A"})-->(b) return distinct b;

order by

通過屬性排序所有節點:match (n) return n order by n.name;

多個屬性排序:match (n) return n order n.name,n.age;

指定排序方式:match (n) return n order by n.name desc;

NULL值的排序:match (n) return n.length,n order by n.length;

limit

match (n) return n order by n.name limit 3;

skip

match (n) return n order by n.name skip 3;

match (n) return n order by n.name skip 1 limit 3;

with

主要用途:

1、通過使用oder by 和limit,with可以限制傳入下一個match子查詢陳述句的物體數目,
2、對聚合值過濾,

過濾聚合函式的結果:(常用于對統計結果的操作) MATCH (david { name: "David" })--(otherPerson)-->() WITH otherPerson, count(*) AS foaf WHERE foaf > 1 RETURN otherPerson;

collect前排序結果:MATCH (n) WITH n ORDER BY n.name DESC LIMIT 3 RETURN collect(n.name;

limit搜索路徑的分支: MATCH (n { name: "Anders" })--(m) WITH m ORDER BY m.name DESC LIMIT 1 MATCH (m)--(o) RETURN o.name;

unwind

將一個集合展開為序列:unwind[1,2,3] as x return x; 創建一個去重的集合:with [1,1,2,3] as coll unwind coll x with distinct x return coll(x) as set;

optional

optional match 外連接(表之間關聯查詢,查詢出兩張表的資料,非笛卡兒積)(optional 貌似可以省略---待測) 與match類似,只是如果沒有匹配上,則使用null作為沒有匹配上的模式,類似sql中的外連接; 匹配關系:match (a:Movie {title:"Wall Street"}) optional match (a)-->(x) return x; 如果沒有回傳null; 匹配屬性:match (a:Movie {title:"Wall Street"}) optional match (a)-->(x) return x,x.name

//回傳兩張表的結果 match (n:ResNode)-[r:INSTANCE_OF]-(m:ResourceTypeNode) where m.typeNum = "2" match(n1:ResNode)-[r0:INSTANCE_OF]-(m1:ResourceTypeNode) where m1.typeNum = "vpn" return n,n1

//回傳兩張表的結果 match (n:ResNode)-[r:INSTANCE_OF]-(m:ResourceTypeNode) where m.typeNum = "2" optional match(n1:ResNode)-[r0:INSTANCE_OF]-(m1:ResourceTypeNode) where m1.typeNum = "vpn" return n,n1

 

斷言函式

   指對給定的輸入回傳true或者false的布爾函式,它們主要用于查詢的WHERE部分過濾子圖

1.1 all() 判斷是否一個斷言適用于串列中的所有元素,

    語法: all(variable IN list WHERE predicate)

    引數:

  list:回傳串列的運算式

  variable:用于斷言中的變數

  predicate:用于測驗串列中所有元素的斷言

  MATCH p =(a)-[*1..3]->(b) WHERE ALL (x IN nodes(p) WHERE x.age > 30) RETURN p

 

1.2 any() 判斷是否一個斷言至少適用于串列中的一個元素,

  語法: any(variable IN list WHERE predicate)

  引數:

    list:回傳串列的運算式

    variable:用于斷言中的變數

    predicate:用于測驗串列中所有元素的斷言

  MATCH (a) RETURN ANY (x IN a.array WHERE x = 'one') RETURN a 回傳路徑中的所有節點的array陣列屬性中至少有一個值為'one',

 

1.3 none() 如果斷言不適用于串列中的任何元素,則回傳true,

  語法: none(variable IN list WHERE predicate)

  引數:

  list:回傳串列的運算式

     variable:用于斷言中的變數=

        predicate:用于測驗串列中所有元素的斷言

  MATCH p =(n)-[*1..3]->(b) WHERE n.name = 'Alice' AND NONE (x IN nodes(p) WHERE x.age = 25) RETURN p  回傳的路徑中沒有節點的age屬性值為25,

 

1.4 single() 如果斷言剛好只適用于串列中的某一個元素,則回傳true,

  語法: single(variable IN list WHERE predicate)

  引數:

  list:回傳串列的運算式

  variable:用于斷言中的變數

  predicate:用于測驗串列中所有元素的斷言

  MATCH p =(n)-->(b) WHERE n.name = 'Alice' AND SINGLE (var IN nodes(p) WHERE var.eyes = 'blue') RETURN p 每潭訓傳的路徑中剛好只有一個節點的eyes屬性值為'blue',

 

1.5 exists() 如果資料庫中存在該模式或者節點中存在該屬性時,則回傳true,

  語法: exists( pattern-or-property )

  引數: pattern-or-property:模式或者屬性(以’variable.prop’的形式)

  MATCH (n) WHERE exists(n.name) RETURN n.name AS name, exists((n)-[:MARRIED]->()) AS is_married 回傳了所有節點的name屬性和一個指示是否已婚的true/false值,

 

標量(Scalar)函式

  標量(Scalar)函式:指回傳一個單值,

2.1 size()
  使用size()回傳表中元素的個數,
  語法: size( list )
  引數: list:回傳串列的運算式
  RETURN size(['Alice', 'Bob']) AS col 回傳了list中元素的個數,

2.2 模式運算式的size
  這里的size()的引數不是一個串列,而是一個模式運算式匹配到的查詢結果集,計算的是結果集元素的個數,而不是運算式本身的長度,
  語法: size( pattern expression )
  引數: pattern expression:回傳串列的模式運算式
  MATCH (a) WHERE a.name = 'Alice' RETURN size((a)-->()-->()) AS fof
  回傳了模式運算式匹配到的子圖的個數

2.3 length()
  使用length()函式回傳路徑的長度,
  語法: length( path )
  引數: path:回傳路徑的運算式
  MATCH p =(a)-->(b)-->(c) WHERE a.name = 'Alice' RETURN length(p)

2.4 字串的長度
  語法: length( string )
  引數: string:回傳字串的運算式
  RETURN length('qwer')

  MATCH (a) WHERE length(a.name)> 6 RETURN length(a.name)
  查詢回傳了name為’Charlie’的長度,

2.5 type()
  回傳字串代表的關系型別,
  語法: type( relationship )
  引數: relationship:一個關系
  MATCH (n)-[r]->() WHERE n.name = 'Alice' RETURN type(r)
  查詢回傳了關系r的關系型別,

2.6 id()
  回傳關系或者節點的id,
  語法: id( property-container )
  引數: property-container:一個節點或者關系
  MATCH (a) RETURN id(a) 回傳了5個節點的id,

2.7 coalesce()
  回傳運算式串列中的第一個非空的值,如果所有的實參都為空 ,則回傳null,
  引數: expression:運算式,可能回傳null,
  MATCH (a) WHERE a.name = 'Alice' RETURN coalesce(a.hairColor, a.eyes)

2.8 head()
  head()回傳串列中的第一個元素,
  語法: head( expression )
  引數: expression:回傳串列的運算式
  MATCH (a) WHERE a.name = 'Eskil' RETURN a.array, head(a.array)
  MATCH p=(n)-[r]->() WHERE n.name = 'Alice' return head(nodes(p))
  回傳了路徑中的第一個節點,

2.9 last()
  last()回傳串列中的最后一個元素,
  語法: last( expression )
  引數: expression:回傳串列的運算式
  MATCH (a) WHERE a.name = 'Eskil' RETURN a.array, last(a.array)
  回傳了路徑中的最后一個節點,

2.10 timestamp()
  timestamp()回傳當前時間與1970年1月1日午夜之間的差值,單位以毫秒計算,它在整個查詢中始侄訓傳同一個值,即使是在一個運行時間很長的查詢中,
  語法: timestamp()
  RETURN timestamp()
  以毫秒回傳當前時間,

2.11 startNode() 回傳一個關系的開始節點,
  語法: startNode( relationship )
  引數: relationship:回傳關系的運算式
  MATCH ()-[r]-() WHERE id(r)=0 RETURN startNode(r)

2.12 endNode()
  endNode()回傳一個關系的結束節點,
  語法: endNode( relationship )
  引數: relationship:回傳關系的運算式
  MATCH ()-[r]-() WHERE id(r)=0 RETURN startNode(r),endNode(r)

2.13 properties()
  properties()將實參轉為屬性值的map,如果實參是一個節點或者關系,回傳的就是節點或關系的屬性的map,如果實參已經是一個map了,那么原樣回傳結果,
  語法: properties( expression )
  引數: expression:回傳節點,關系或者map的運算式
  match (n) where id(n) =0 RETURN properties(n)

2.14 toInt()
  toInt()將實參轉換為一個整數,字串會被決議為一個整數,如果決議失敗,將回傳null,浮點數將被強制轉換為整數,

2.15 toFloat
  toFloat()將實參轉換為浮點數,字串會被決議為一個浮點數,如果決議失敗,將回傳null,整數將被強制轉換為浮點數,

 

其他函式---模式(索引、約束、統計)

索引

標簽上創建索引:create index on :Person(name)

洗掉索引:drop index on :Person(name)

約束

創建唯一約束:CREATE CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE

洗掉約束:DROP CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE

2、更新圖形

創建一個完整的path path由節點和關系構成,當路徑中的關系或節點不存在時,neo4j會自動創建; CREATE p =(vic:Worker:Person{ name:'vic',title:"Developer" })-[:WORKS_AT]->(neo)<-[:WORKS_AT]-(michael:Worker:Person { name: 'Michael',title:"Manager" }) RETURN p 變數neo代表的節點沒有任何屬性,但是,其有一個ID值,通過ID值為該節點設定屬性和標簽

2)為節點增加屬性 match(n) where id(n)=7 set n.name='neo' return n;

3)為節點增加標簽 match (n) where id(n)=7 set n:Company return n;

4)為關系增加屬性 match (n) <-[r]-(m) where id(n)=7 and id(m)=8 set r.team='azure' return n;

3、物體相關函式

match (:Person{name:'tom'})-[r]->(movie) return id(r);

match (:Person{name:'tom'})-[r]->(movie) return type(r);

match (:Person{name:'tom'})-[r]->(movie) return lables(movie);

MATCH (a) WHERE a.name = 'Alice' RETURN keys(a)

CREATE (p:Person { name: 'Stefan', city: 'Berlin' }) RETURN properties(p)

4、merge的作用

節點存在時,匹配該節點; 節點不存在時,創建新的節點,功能是match子句和creat的組合, 通過merge子句,可以指定圖形中必須一個節點,該節點必須具有特定的標簽,屬性等,如果不存在,merge子句將創建回應的節點,

 

5、復雜查詢

//排除查詢

MATCH (m:ResNode) WHERE m.resTypeId IN {resTypeNums} AND m.discarded <> true WITH COLLECT(m) AS nRes MATCH (n:ResNode) WHERE n.discarded <> true AND NOT n IN nRes RETURN n

match (m:ResNode) where m.resTypeId in ["DEVICE_ROOM","CAB","SERVER"] with collect(m) as ress MATCH (n:ResNode) where not n in ress RETURN n LIMIT 3

//查詢最近的n條記錄

MATCH (n:HisNode)-[r:HAS_PRE_HIS*1..30]->(m:HisNode) where n.hisId ='HISNODE_START' RETURN n,r,m

//關系深度

MATCH p=(n)-[*1..5]->(m) RETURN p //匹配從n到m,任意關系,深度1到5的節點

MATCH p=(n)-[*]->(m) RETURN p //匹配從n到m,任意關系、任意深度的節點

//查詢id前52位重復的關系

MATCH (n:ResNode)-[r:RES_RES_RELATION]-(m:ResNode) WITH n, m, COLLECT (SUBSTRING(r.id,0,52)) as rr WHERE size(rr)>1 and n.resTypeId = "TYPE_SYSTEM" and m.resTypeId = "MOD_PCSERVER" return rr

 

 

注意事項:

1)節點所屬label不能為空(neo4j默認以當前類名作為label名稱);需要通過label進行節點查詢;

2)label是對關系型資料庫中表的延伸,label中可以存放同一型別的節點(關系型資料庫中的記錄),也可以存放不同型別的節點(可以存放多個表中的記錄),

 

感謝閱讀,參考了不少大佬資源,如需轉載,請注明出處,謝謝!https://www.cnblogs.com/huyangshu-fs/p/13620260.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/135541.html

標籤:其他

上一篇:一道Postgresql遞回樹題

下一篇:Linux(發行版:CentOS)學習(一):基礎命令 & 相關檔案操作命令(未完待續......)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more