精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

開源NoSQL數據庫:ArangoDB入門指南

數據庫 其他數據庫
本文這個新手指南會讓你熟悉 ArangoDB。我們將介紹安裝并運行一個本地 ArangoDB 服務器、使用Web界面與之交互、將示例數據存儲在數據庫中等等。

[[209070]]

概述

這個新手指南會讓你熟悉 ArangoDB。我們將介紹,

  • 安裝并運行一個本地 ArangoDB 服務器
  • 使用Web界面與之交互
  • 將示例數據存儲在數據庫中
  • 查詢數據庫以再次檢索數據
  • 編輯和刪除現有數據

安裝

去 arangodb.com/download,選擇您的操作系統并下載 ArangoDB。如果有包管理器,你也可以參考說明如何通過包管理器進行安裝。

在 Linux 下如果您安裝了二進制包,服務器會自動啟動。

在 MacOS X 下,如果你用包管理器 homebrew 安裝 ArangoDB,通過命令啟動服務,/usr/local/sbin/arangod.

在 Windows 下把 ArangoDB 安裝為服務,它會自動啟動。未安裝為服務的情況下,需要運行位于安裝目錄中的 bin 目錄下的 arangod.exe。你可能必須以管理員身份運行,以獲得對 C:\Program Files 目錄的寫權限。

關于安裝 ArangoDB 更深入的信息,以及可用的啟動參數,在集群中安裝等,參閱安裝文檔。

保護安裝

默認安裝包含 _system 數據庫和 root 用戶。

基于 Debian 的軟件包和 Winsows Installer 都會在安裝過程中詢問密碼。基于 RedHat 的軟件包則會設置一個隨機密碼。對于其它安裝包,你需要執行

shell> arango-secure-installation

這會要求輸入一個 root 密碼并保存起來。

Web 界面

服務本身(arangod)是基于 HTTP/REST 的,但是你可以使用圖形化的 Web 界面讓操作變得簡單。還有 arangosh,一個異步 shell,用來與服務器進行交互。如果你是開發者,你可能更喜歡使用 shell 而不是 GUI。目前它還沒有提供像語法高亮這樣的功能。

在項目中開始使用 ArangoDB 的時候,你會尋找官方或社區使用與項目相同語言編寫的驅動。驅動實現了可以在項目編程語言中輕松使用的編程接口,與服務器進行完全地交互。因此,除非你想自己寫驅動或者直接使用原始接口,否則理所當然地,應該忽略 HTTP API。

為了熟悉數據庫系統你可以將驅動放置一邊而使用 web 界面 (代碼名 Aardvark) 進行基本交互. web 界面將會在你啟動 arangod 之后變為可用. 你可以在瀏覽器中通過 http://localhost:8529 進行訪問 – 如果不可以,請查看 故障排除.

默認情況下, 驗證已啟用. 默認用戶為 root. 依據所用的安裝方法,安裝過程會提示輸入 root 密碼或者默認 root 密碼為空 (參看 以上).

 

接下來你會被詢問使用哪個數據庫。所有的服務器實例帶有一個 _system 數據庫. 選擇該數據庫并繼續.

 

然后你會看到如下的服務器統計面板:

 

要了解關于接口的更詳細描述,參看 Web Interface.

數據庫,集合與文檔

數據庫是集合的集合. 集合存儲記錄, 記錄被稱為文檔. 集合等價于 RDBMS 中的表, 而文檔可以被認為是表中的行. 區別在于你不需要預先定義有哪些列 (或者屬性). 任意集合中的所有文檔可以擁有任意的屬性鍵與值. 然而實際上一個集合中的文檔具有相似的結構, 但是數據庫系統本身并不會關心,無論你的數據是什么樣子,數據庫系統都會在其上執行穩定而快速的操作.

現在你可以停留在默認的 _system 數據庫中并使用 web 接口來創建集合與文檔. 點擊 COLLECTIONS 菜單項, 然后選擇 Add Collection 菜單. 為其指定一個名字,例如 users, 保持其他的設置不變 (我們希望它是一個文檔集合) 并保存. 會出現一個標記為 users 的新菜單項, 你可以點擊打開.

目錄還沒有任何文檔. 點擊右側帶有白色加號的綠色圓環來創建該集合中的***個文檔. 對話框會詢問你 _key. 你可以將該區域留空并點擊 Create 來讓數據據系統賦值一個自動生成 (唯一) 的鍵. 注意 _key 屬性是不可修改的, 這意味著一旦文檔被創建你不可以修改該鍵. 你可以用作文檔鍵的內容在命名約定 中有相應的描述.

在這種情況下,自動生成的鍵值也許是 “9883” (_key 總是字符串!), 而文檔 _id 也許是 “users/9883” . 除了一些系統屬性,在文檔中并沒有其他內容. 讓我們通過點擊 (空對象) 左側的圖標添加一個自定義屬性, 然后 添加. 兩個文本輸入框會變得可用, FIELD (屬性鍵) 與 VALUE (屬性值). 輸入名字作為鍵,輸入你的名字作為值. 添加 另一個屬性,將其命名為年齡,并將其設置為你的年齡. 點擊保存來保存這些修改. 如果你點擊 ArangoDB 圖標右側頂點的集合: users , 文檔瀏覽器將會顯示 users 集合中的文檔,而你可以在列表中看到你剛剛創建的文檔.

查詢數據庫

是時候通過AQL(ArangoDB’ query language)ArangoDB查詢語言來取得我們的文檔了。我們可以直接通過我們創建的_id屬性查找文檔(當然我們還可以使用其它選項)。點擊QUERIES菜單欄來顯示query editor(查詢編輯器)輸入以下的內容(具體取決于你的document ID):

  1. RETURN DOCUMENT("users/9883"

然后點擊Execute來啟動查詢,結果如下所示:

  1.   { 
  2.     "_key""9883"
  3.     "_id""users/9883"
  4.     "_rev""9883"
  5.     "age": 32, 
  6.     "name""John Smith" 
  7.   } 
  8.  

結果出現在編輯器下方。如你所見,程序返回了整個文檔,包含著系統屬性。DOCUMENT() 函數會根據你提供的_keys或者_ids返回一系列或者單個文檔。我們管返回的結果叫做查詢結果,它是一個數組,包含了我們的文檔查詢結果(我們可能會得到不只一個文檔,但是即使只有一個文檔結果,它仍然會返回最上層的數組)。

這種類型的查詢稱為數據訪問查詢。這種查詢不會創建、更改或刪除數據。還有另一種類型的查詢,稱為數據修改查詢。讓我們使用修改查詢插入第二個文檔:

  1. INSERT { name"Katie Foster", age: 27 } INTO users 

查詢非常容易看懂: INSERT 關鍵詞告訴ArangoDB我們想插入一些東西。后面緊跟著的是我們要插入的東西,在這個案例中是一個擁有兩個屬性的文檔。 花括號{ } 表示文件,或者說是對象。我們所說的文件是指集合中的記錄。當用JSON編碼時,我們叫它對象。對象也可以嵌套。下面舉個例子:

  1.   "name": { 
  2.     "first""Katie"
  3.     "last""Foster" 
  4.   } 
  5.  

INTO 必須跟在每一個 INSERT 操作后面,后面再接上我們儲存文檔的集合的名字。注意集合的名字不必加上引號。

如果你運行上面的查詢語句,會返回一個空數組,因為你沒有用 RETURN 關鍵詞指定要返回的內容。 RETURN 關鍵詞在修改查詢中是可選項,但在數據訪問查詢中是必選項。就算用上 RESULT,返回值也可能是空數組,比如制定文檔無法找到的情況。盡管結果為空,以上的查詢仍然會創建新用戶文件。你可以在文檔瀏覽器中驗證這一點。

這一次我們新建一個用戶,并且讓新的結果返回。

  1. INSERT { name"James Hendrix", age: 69 } INTO users 
  2.  
  3. RETURN NEW  

NEW 是一個虛擬變量,指的是用INSERT語句新建的文檔。查詢結果如下:

  1.   { 
  2.     "_key""10074"
  3.     "_id""users/10074"
  4.     "_rev""10074"
  5.     "age": 69, 
  6.     "name""James Hendrix" 
  7.   } 
  8.  

現在我們一個有三個用戶了。如何用一條語句返回全部數據呢?下面的方法不起作用:

  1. RETURN DOCUMENT("users/9883"
  2.  
  3. RETURN DOCUMENT("users/9915"
  4.  
  5. RETURN DOCUMENT("users/10074" 

這里僅有一條 RETURN 語句,如果你嘗試執行,則會拋出系統錯誤. DOCUMENT() 函數提供了一個補充簽名來指定多文檔處理,所以我們可以:

  1. RETURN DOCUMENT( ["users/9883""users/9915""users/10074"] ) 

所有3個文檔的帶有 _ids 的數組會被傳遞給函數. 數組通過方括號 [ ] 表示,而其元素使用逗號進行分隔.

但是如果我們添加更多用戶會怎樣呢? 我們同時需要修改查詢來獲取新添加的用戶. 關于我們的查詢,我們希望表達的是: “對于 users 集合中的每一個用戶, 返回用戶文檔”. 我們可以使用 FOR 循環格式化該查詢:

  1. FOR user IN users 
  2.  
  3. RETURN user  

它表達的是對 users 中的所有文檔進行迭代并使用user 作為變量名, 從而我們可以用來指代當前用戶文檔. 它可以被稱為 doc, u 或 ahuacatlguacamole, 這取決于你. 然而建議使用一個簡短并自描述的名字.

循環體告訴系統返回變量 user 的值, 這是一個用戶文檔. 可以像下面這樣返回所有用戶文檔:

  1.   { 
  2.     "_key""9915"
  3.     "_id""users/9915"
  4.     "_rev""9915"
  5.     "age": 27, 
  6.     "name""Katie Foster" 
  7.   }, 
  8.   { 
  9.     "_key""9883"
  10.     "_id""users/9883"
  11.     "_rev""9883"
  12.     "age": 32, 
  13.     "name""John Smith" 
  14.   }, 
  15.   { 
  16.     "_key""10074"
  17.     "_id""users/10074"
  18.     "_rev""10074"
  19.     "age": 69, 
  20.     "name""James Hendrix" 
  21.   } 
  22.  

也許你已經注意到返回的文檔順序與插入順序并不相同. ArangoDB 并不保證文檔順序,除非你顯式對其進行排序. 我們可以很容易添加了一個 SORT 操作:

  1. FOR user IN users 
  2.  
  3. SORT user._key 
  4.  
  5. RETURN user  

這依然不會返回預期的結果: James (10074) 會在 John (9883) 與 Katie (9915) 之前返回. 原因在于 _key 屬性在 ArangoDB 中是一個字符串,而不是一個數字. 字符串的單個字符會被進行比較. 1 小于 9 ,因而結果是 “正確”的. 如果我們希望使用數值作為 _key 屬性的值,我們可以將字符串轉換為數字并用其進行排序. 然而這樣做有一些影響T. 我們***排序其他內容. 年齡怎么樣?以降序排列嗎?

  1. FOR user IN users 
  2.  
  3. SORT user.age DESC 
  4.  
  5. RETURN user  

用戶的數據會以如下的順序返回: James (69), John (32), Katie (27)。與用DESC返回降序結果不同, ASC返回升序結果。 ASC是默認的選項,可以省略。

我們可能需要根據用戶的年齡返回一個子集。讓我們返回30歲以上的用戶的數據:

  1. FOR user IN users 
  2.  
  3. FILTER user.age > 30 
  4.  
  5. SORT user.age 
  6.  
  7. RETURN user  

這么做會按順序返回John and James。 Katie’s age的屬性不滿足三十歲以上的條件,她只有27歲,因此不再結果之中。我們可以修改她的年齡,使她重新包含在返回結果之中,使用如下的查詢語句:

  1. UPDATE "9915" WITH { age: 40 } IN users 
  2.  
  3. RETURN NEW  

UPDATE 允許部分編輯已存在的文檔. 另外有 REPLACE, 會移除所有屬性 (除了 _key 與 _id 保持不變) 并且僅添加部分屬性. 另一方面 UPDATE 替換指定的屬性而保持其他屬性不變.

UPDATE 關鍵字后跟文檔鍵 (或者帶有 _key 屬性的文檔 / 對象) 來指定要修改的文檔. 要更新的屬性作為對象使用 WITH關鍵字寫入. IN 表示在哪個集合中執行該操作, 類似 INTO (這里兩個關鍵字可以互換). 如果我們使用 NEW 偽變量則會返回應用修改的全部文檔:

  1.   { 
  2.     "_key""9915"
  3.     "_id""users/9915"
  4.     "_rev""12864"
  5.     "age": 40, 
  6.     "name""Katie Foster" 
  7.   }  

相反如果我們使用 REPLACE , name 屬性會丟失. 使用 UPDATE, 屬性會被保留 (如果我們有其他的屬性,也同樣適用該規則).

讓我們再次運行 FILTER 查詢, 但是這一次僅返回用戶名:

  1. FOR user IN users 
  2.  
  3. FILTER user.age > 30 
  4.  
  5. SORT user.age 
  6.  
  7. RETURN user.name  

這會返回所有3個用戶的名字:

  1.  
  2. "John Smith"
  3.  
  4. "Katie Foster"
  5.  
  6. "James Hendrix" 
  7.  
  8.  

如果僅返回一個屬性的子集,則將其稱為投影. 另一種投影類型是改變結果的結構:

  1. FOR user IN users 
  2.  
  3. RETURN { userName: user.name, age: user.age }  

該查詢為所有的用戶文檔定義了輸出格式. 用戶名作為 userName 返回,而不是 name, 在該示例中 age 與屬性性鍵相同:

  1.   { 
  2.     "userName""James Hendrix"
  3.     "age": 69 
  4.   }, 
  5.   { 
  6.     "userName""John Smith"
  7.     "age": 32 
  8.   }, 
  9.   { 
  10.     "userName""Katie Foster"
  11.     "age": 40 
  12.   } 

也可以計算新值:

  1. FOR user IN users 
  2.  
  3. RETURN CONCAT(user.name"'s age is "user.age)  

CONCAT() 是一個將元素合并為字符串的函數. 在這里我們用其為所有用戶返回一個描述. 正如你看到的,結果集合并不總是一個對象數組:

  1.  
  2. "James Hendrix's age is 69"
  3.  
  4. "John Smith's age is 32"
  5.  
  6. "Katie Foster's age is 40" 
  7.  
  8.  

現在讓我們來做一些瘋狂的事情: 對于用戶集合中的所有文檔,再次對所有用戶文檔進行迭代并返回用戶組合,例如 John 與 Katie. 對于該問題,我們可以在一個循環內部使用一個循環來獲得叉積 (所有用戶記錄的所有可能組合, 3 3 = 9). 然而我們并不希望得到類似 John + John* 的組合, 所以讓我們使用一個過濾器條件來去除類似的組合:

  1. FOR user1 IN users 
  2.  
  3. FOR user2 IN users 
  4.  
  5. FILTER user1 != user2 
  6.  
  7. RETURN [user1.name, user2.name 

我們得到6對組合。類似 James + John 與 John + James 的組合是重復的,但是已足夠好:

  1.   [ "James Hendrix""John Smith" ], 
  2.   [ "James Hendrix""Katie Foster" ], 
  3.   [ "John Smith""James Hendrix" ], 
  4.   [ "John Smith""Katie Foster" ], 
  5.   [ "Katie Foster""James Hendrix" ], 
  6.   [ "Katie Foster""John Smith" ] 
  7.  

我們可以像下面這樣計算兩個年齡之和并計算一些新的內容:

  1. FOR user1 IN users 
  2.   FOR user2 IN users 
  3.     FILTER user1 != user2 
  4.     RETURN { 
  5.         pair: [user1.name, user2.name], 
  6.         sumOfAges: user1.age + user2.age 
  7.     }  

我們引入一個新的屬性 sumOfAges 并將兩個年齡相加作為其值:

  1.   { 
  2.     "pair": [ "James Hendrix""John Smith" ], 
  3.     "sumOfAges": 101 
  4.   }, 
  5.   { 
  6.     "pair": [ "James Hendrix""Katie Foster" ], 
  7.     "sumOfAges": 109 
  8.   }, 
  9.   { 
  10.     "pair": [ "John Smith""James Hendrix" ], 
  11.     "sumOfAges": 101 
  12.   }, 
  13.   { 
  14.     "pair": [ "John Smith""Katie Foster" ], 
  15.     "sumOfAges": 72 
  16.   }, 
  17.   { 
  18.     "pair": [ "Katie Foster""James Hendrix" ], 
  19.     "sumOfAges": 109 
  20.   }, 
  21.   { 
  22.     "pair": [ "Katie Foster""John Smith" ], 
  23.     "sumOfAges": 72 
  24.   } 
  25.  

如果我們希望過濾新屬性來僅返回總和小于100的組合,我們應該定義一個變量來臨時存儲總和,從而我們可以在 FILTER 語句以及 RETURN 語句中使用:

  1. FOR user1 IN users 
  2.   FOR user2 IN users 
  3.     FILTER user1 != user2 
  4.     LET sumOfAges = user1.age + user2.age 
  5.     FILTER sumOfAges < 100 
  6.     RETURN { 
  7.         pair: [user1.name, user2.name], 
  8.         sumOfAges: sumOfAges 
  9.     }  

LET 關鍵字后跟指定的變量名 (sumOfAges), 然后是 = 符號與值或表達式來定義變量的值. 在這里我們重用我們的表達式來計算總和. 然后我們使用另一個 FILTER 來略過不需要的組合并使用我們之前聲明的變量. 我們使用用戶名與所計算的年齡值的數組返回一個投影,為些我們再次使用變量:

  1.   { 
  2.     "pair": [ "John Smith""Katie Foster" ], 
  3.     "sumOfAges": 72 
  4.   }, 
  5.   { 
  6.     "pair": [ "Katie Foster""John Smith" ], 
  7.     "sumOfAges": 72 
  8.   } 
  9.  

小貼士: 當定義對象時, 如果所要求的屬性鍵與屬性值所用的變量相同i, 你可以使用簡寫形式: { sumOfAges } 替代 { sumOfAges: sumOfAges }.

***,讓我們刪除一個用戶文檔:

  1. REMOVE "9883" IN users 

它會刪除用戶 John (_key: “9883”). 我們也可以在循環中移除文檔 (同樣適用于 INSERT, UPDATE 與 REPLACE):

  1. FOR user IN users 
  2.     FILTER user.age >= 30 
  3.     REMOVE user IN users  

該查詢會刪除年齡大于等于 30 的所有用戶.

如何繼續

在AQL 中可探索更多內容以及 ArangoDB 提供的更多功能. 繼續閱讀其他章節并使用測試數據庫試驗以促進你的知識.

如果你希望立即編寫更多的 AQL 查詢,請查看:

  • 數據查詢: 數據訪問與修改查詢
  • 高級操作: FOR, FILTER 的詳細描述以及該簡介中未涉及的更多操作
  • 函數: 所提供函數的參數

ArangoDB程序

ArangoDB包有以下程序:

  • arangod: ArangoDB數據庫守護進程. 此服務器程序旨在作為守護程序進程運行,并通過TCP / HTTP向各種客戶端連接到服務器。
  • arangosh: ArangoDB shell. 客戶端實現read-eval-print-Loop(REPL)并提供函數來訪問和管理ArangoDB服務器。
  • arangoimp: ArangoDB服務器的 批量導入器 。它支持JSON和CSV。
  • arangodump:以JSON格式創建ArangoDB數據庫備份 的工具。
  • arangorestore: 將備份數據加載回ArangoDB數據庫的工具。
  • arango-dfdb: ArangoDB的數據文件調試器。它主要用于開發ArangoDB。
  • arangobench: A基準測試工具。 它可以用于性能和服務器功能測試。 
責任編輯:龐桂玉 來源: 36大數據
相關推薦

2011-07-19 09:08:50

JavaNoSQL

2024-02-02 10:51:53

2019-03-20 14:44:53

數據庫MySQLExcel

2023-07-28 08:27:03

MongoDB數據庫

2021-09-28 09:25:05

NoSQL數據庫列式數據庫

2011-10-09 09:38:03

OracleNoSQL

2019-03-20 15:59:11

NoSQLRedis數據庫

2010-04-01 09:45:38

NoSQL

2019-07-08 10:36:34

數據庫WebNoSQL

2024-03-28 09:00:00

NoSQL數據庫

2011-07-13 09:58:15

HBase

2011-04-14 11:14:21

OracleNoSQLMySQL

2019-07-23 11:41:45

數據庫SQLDocker

2011-03-25 14:40:29

Trinity數據庫

2014-02-27 10:08:33

NoSQL

2011-05-16 10:29:44

HandlerSockNoSQL

2023-03-05 16:25:38

NoSQL數據庫

2020-10-31 22:01:40

NoSQL數據庫

2025-01-10 09:25:10

NOSQL數據庫ACID

2017-05-25 10:11:46

數據庫令牌節點
點贊
收藏

51CTO技術棧公眾號

一区二区三区视频在线| 国产寡妇亲子伦一区二区| 亚洲欧美在线一区二区| 无限资源日本好片| 欧美野外wwwxxx| 狠狠躁日日躁夜夜躁av| 天堂va欧美ⅴa亚洲va一国产| 亚洲午夜电影网| 日本在线视频不卡| 亚洲大尺度网站| 日本 国产 欧美色综合| 久久久久久久91| 国产探花视频在线播放| 爱爱精品视频| 欧美精品成人一区二区三区四区| 男女私大尺度视频| 久久精品视频观看| 久久久国产精品不卡| 99re在线视频上| 日本一区二区三区久久| 亚洲久久成人| 久久夜色精品亚洲噜噜国产mv | 精品国产乱码久久久久久鸭王1 | 不卡av电影在线| 欧美日韩国产成人精品| www.精品av.com| 国产黄片一区二区三区| 国内露脸中年夫妇交换精品| 欧美一区午夜视频在线观看| 超碰影院在线观看| 小早川怜子影音先锋在线观看| 一区二区三区精品在线观看| 亚洲欧洲在线一区| 国产福利在线看| 91视频在线观看免费| 国产69精品久久久久9999apgf| 97免费观看视频| 麻豆91在线观看| 国产精品美女免费| 波多野结衣午夜| 三级不卡在线观看| 国产成人aa精品一区在线播放| 日韩污视频在线观看| 尹人成人综合网| 欧美黑人狂野猛交老妇| 激情四射综合网| 你懂的一区二区| 午夜精品久久久久久| 日韩精品一区二区三区在线| 国产精品沙发午睡系列| 密臀av在线播放| 欧美性xxxx| 欧美a在线视频| 久久青青视频| 欧美在线一区二区| 亚洲 欧美 日韩系列| 巨胸喷奶水www久久久| 在线观看免费视频综合| 亚洲污视频在线观看| 久久精品 人人爱| 欧美日韩国产高清一区二区| 亚洲精品手机在线观看| 国产精品一区二区三区www| 欧美一区二区三区免费大片| 久久久久无码国产精品一区李宗瑞| 欧美2区3区4区| 亚洲国产97在线精品一区| 99re久久精品国产| 国产日产精品_国产精品毛片| 亚洲美女在线看| 美国一级黄色录像| 女同性一区二区三区人了人一| 欧美激情国内偷拍| 五月天综合激情| 日韩不卡一二三区| 91影视免费在线观看| 亚洲精品视频专区| 久久久一区二区三区捆绑**| 午夜精品美女久久久久av福利| 麻豆网站在线免费观看| 亚洲精品欧美激情| 久久国产亚洲精品无码| 黑人一区二区三区| 欧美sm美女调教| 亚洲一区二区三区蜜桃| 先锋资源久久| 91国内揄拍国内精品对白| 欧美高清69hd| 国产成人免费网站| 欧美连裤袜在线视频| 五月天婷婷在线视频| 亚洲6080在线| 91精品无人成人www| 亚洲视频精选| 亚洲色图在线观看| 国产99视频精品免视看7| b站大片免费直播| 影音先锋日韩精品| 全亚洲最色的网站在线观看| 国产成a人亚洲精v品无码| 91蝌蚪porny成人天涯| 在线国产精品网| 涩涩网在线视频| 欧美一区二区三区人| 欧美大波大乳巨大乳| 一区精品久久| 成人免费看片视频| 国产永久av在线| 亚洲va天堂va国产va久| 国产免费中文字幕| 国产真实有声精品录音| 国内精品久久久久影院 日本资源| 欧美在线视频精品| 99精品国产一区二区三区不卡| 中文精品一区二区三区 | 亚洲综合一二区| 国产又猛又黄的视频| 成人偷拍自拍| 美日韩精品视频免费看| 欧美 亚洲 另类 激情 另类| 99久久久国产精品| 成年人视频网站免费| 日本国产亚洲| 伊是香蕉大人久久| 毛片毛片女人毛片毛片| 成人午夜激情在线| 日本香蕉视频在线观看| 综合久草视频| 色偷偷综合社区| 最新黄色网址在线观看| 久久这里都是精品| 99爱视频在线| 任我爽精品视频在线播放| 欧美精品videosex性欧美| 国产视频一区二区三| 国产精品第四页| 色天使在线观看| 日韩欧美一区二区三区免费看| 欧美专区中文字幕| 神马久久久久| 色婷婷av一区二区三区gif| 免费的av网站| 国产美女一区| 久久久久久久久一区| 碰碰在线视频| 国产一区不卡| 在线成人中文字幕| 国产精品第六页| 日本一区二区三区高清不卡| 超碰网在线观看| 国产一区日韩| 国产精品18久久久久久麻辣| 国产免费永久在线观看| 日本高清成人免费播放| 美国精品一区二区| 激情六月婷婷久久| 超薄肉色丝袜足j调教99| 日韩综合一区二区三区| 欧美激情中文字幕乱码免费| 日韩中文字幕综合| 色婷婷av一区二区三区之一色屋| 亚洲一区二区三区日韩| 久久99精品久久久久婷婷| 免费看污污视频| 国产精品chinese在线观看| 91爱视频在线| 成人亚洲综合天堂| 欧美一三区三区四区免费在线看 | 亚洲精品乱码| 免费电影一区| 久久久精品免费看| 久久亚洲欧美国产精品乐播| 激情视频免费网站| 欧美日韩福利| 欧美一区三区二区在线观看| 男人亚洲天堂| 欧美激情性做爰免费视频| 青青视频在线观| 欧美日韩情趣电影| 久久精品这里有| 久久精品一区二区三区不卡| 日本国产一级片| 亚洲区欧美区| 日本在线观看一区二区| 日韩视频在线直播| 日本精品一区二区三区在线播放视频| 午夜在线小视频| 精品999久久久| 黄色大全在线观看| 一区二区三区国产豹纹内裤在线 | www.久久久久久| 欧美日韩亚洲一区二区| 亚洲伦理一区二区三区| 99精品久久99久久久久| www激情五月| 欧美日韩中文字幕在线观看| 羞羞答答国产精品www一本 | 黄色工厂这里只有精品| 欧美一区二区三区在线免费观看 | 欧美r级电影在线观看| 精品一区二三区| 亚洲一二三区视频在线观看| 欧美福利第一页| 成人av免费观看| 一区二区三区四区毛片| 久久人人精品| 欧美色综合久久| 日韩精品一区二区在线视频| 欧美亚洲tv| 成人一区二区电影| 中文字幕在线视频久| 欧美wwwxxxx| 国产高清视频在线| 亚洲国产精品va在看黑人| 亚洲一级黄色大片| 欧美激情久久久久久久久久久| 国产精品福利久久久| av福利在线导航| 欧美xxxx14xxxxx性爽| 香蕉视频国产在线观看| 亚洲人成网站777色婷婷| 手机看片1024国产| 精品美女在线观看| 亚洲AV无码国产精品午夜字幕| 欧美午夜片在线观看| 成人午夜淫片100集| 天天爱天天做天天操| 欧洲亚洲成人| 99影视tv| 国产精一区二区| 国产精品丝袜久久久久久高清| 三级在线观看视频| 久久久午夜视频| 美女精品导航| 欧美日本国产在线| 爆操欧美美女| 日皮视频在线观看| 欧美日韩国产成人在线91 | 午夜精品久久久久久久久久| 美女的奶胸大爽爽大片| 亚洲日本电影在线| 免费高清在线观看电视| 亚洲视频狠狠干| 欧美日韩午夜视频| 香蕉久久一区| 欧美日韩国产综合草草| 无码日韩精品一区二区| 欧美视频在线免费看| 午夜影院免费在线观看| 一本久久a久久免费精品不卡| 日韩黄色在线播放| 色狠狠一区二区三区香蕉| 波多野结衣视频免费观看| 欧美丝袜自拍制服另类| 亚洲在线视频播放| 91精品国产一区二区三区香蕉| 国产精品老熟女视频一区二区| 宅男在线国产精品| 亚洲国产精品suv| 亚洲国产天堂久久综合| 男人天堂亚洲二区| 在线看片第一页欧美| 黄色一级片在线观看| 欧美激情xxxxx| 筱崎爱全乳无删减在线观看| 国产精品第七十二页| 亚洲一区av| 国产精品一区二区三区观看| 一区二区三区日本久久久| 日韩国产精品一区二区| 久久精品国内一区二区三区水蜜桃| 国产经典久久久| 一区二区激情| 国产福利在线免费| 成人免费的视频| 国产传媒国产传媒| 亚洲精品欧美专区| 日韩在线 中文字幕| 欧美疯狂做受xxxx富婆| 色婷婷在线视频| 中文字幕在线观看日韩| 欧洲性视频在线播放| 国产精品第二页| y111111国产精品久久久| 午夜精品区一区二区三| 国内综合精品午夜久久资源| 久久久久久久久久福利| 国产精品影视网| 女人被狂躁c到高潮| 最新热久久免费视频| 中文字幕在线观看视频网站| 欧美猛男超大videosgay| 香港三日本三级少妇66| 精品国产一区二区三区久久久| 97蜜桃久久| 成人精品久久一区二区三区| 久久九九热re6这里有精品| 亚洲一区二区自拍偷拍| 国产视频欧美| 被黑人猛躁10次高潮视频| 国产午夜一区二区三区| 日本熟妇乱子伦xxxx| 91精品在线麻豆| 精品乱码一区二区三四区视频| 九九热99久久久国产盗摄| 欧美在线va视频| 精品久久久久久综合日本| 亚洲精品成人| 性生活免费在线观看| 国产片在线观看| 亚洲美女黄色片| 精品日韩av| 成人性教育视频在线观看| 国产精品一国产精品| 男女猛烈激情xx00免费视频| 国内精品久久久久影院薰衣草| 亚洲最大成人网站| 婷婷成人激情在线网| 亚洲成人一二三区| 欧美成人剧情片在线观看| 欧洲精品久久久久毛片完整版| 欧美日韩在线精品| 国产精品日本| 黄色国产在线视频| 亚洲国产一二三| www黄色网址| 久久国产视频网站| 懂色av色香蕉一区二区蜜桃| 一本一道久久a久久精品综合 | 天天干在线观看| 久久久久成人精品| av不卡一区| 久无码久无码av无码| 国产成人av电影免费在线观看| 三级av在线免费观看| 91精品麻豆日日躁夜夜躁| 久草免费在线| 91视频免费网站| 希岛爱理一区二区三区| 97人人模人人爽人人澡| 亚洲欧美欧美一区二区三区| ,一级淫片a看免费| 久久综合伊人77777尤物| 激情综合五月| 成人午夜免费在线视频| 国产91丝袜在线播放0| 久久免费黄色网址| 欧美精品一区二区精品网| 黄色视屏在线免费观看| 久久99精品久久久久久三级 | 日韩av.com| 一色屋精品亚洲香蕉网站| 国产精品-色哟哟| 久久999免费视频| 福利欧美精品在线| 国产淫片免费看| 欧美激情一区二区三区四区| 一区二区三区午夜| 欧美大片在线看| 欧美大胆视频| 538在线视频观看| 专区另类欧美日韩| 人人妻人人澡人人爽久久av| 欧美色偷偷大香| 免费黄网站在线播放| 1区1区3区4区产品乱码芒果精品| 国产精品www.| 中文字幕第20页| 欧美猛男超大videosgay| 色yeye免费人成网站在线观看| 国产精品乱码视频| 丝袜美腿亚洲一区二区图片| 国产精品情侣呻吟对白视频| 56国语精品自产拍在线观看| 青青青国内视频在线观看软件| 久久99精品久久久久子伦| 青青草成人在线观看| 久久久精品视频在线| 亚洲美腿欧美激情另类| 只有精品亚洲| 欧洲国内综合视频| 都市激情一区| 99理论电影网| 日韩高清不卡在线| 极品盗摄国产盗摄合集| 亚洲欧美国产制服动漫| 国产精品日韩精品在线播放| 男人添女荫道口图片| 国产精品国产三级国产aⅴ入口 | 国产福利精品导航| 99久久精品国产亚洲| 欧美精品免费在线| 国产欧美日韩视频在线| 亚洲欧美激情一区二区三区| 欧洲精品在线观看| heyzo高清在线| 免费看污污视频| 国产日韩欧美高清| 色综合视频在线| 91香蕉亚洲精品|