亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Elixir Ecto: 在Postgres中使用UUID類型的主鍵

OnlyLing / 1107人閱讀

摘要:使用作為主鍵的目的降低類型這種自增線性特征作為隨機(jī)生成的字符串讓更離散增強(qiáng)系統(tǒng)的反爬蟲(chóng)能力至少避免通過(guò)的線性增加來(lái)爬取內(nèi)容這種最簡(jiǎn)單的爬取方式使用主鍵的是那種方式各有優(yōu)缺點(diǎn)可按實(shí)際需求自行權(quán)衡在應(yīng)用程序中生成并插入到數(shù)據(jù)庫(kù)通過(guò)使用擴(kuò)展自動(dòng)生

使用UUID作為主鍵的目的

降低Serial類型這種自增ID線性特征, UUID作為隨機(jī)生成的字符串, 讓ID更離散, 增強(qiáng)系統(tǒng)的反爬蟲(chóng)能力(至少避免通過(guò)ID的線性增加來(lái)爬取內(nèi)容這種最簡(jiǎn)單的爬取方式)

使用主鍵的是那種方式, 各有優(yōu)缺點(diǎn), 可按實(shí)際需求自行權(quán)衡

在應(yīng)用程序中生成UUID, 并插入到數(shù)據(jù)庫(kù)

通過(guò)使用pgcrypto擴(kuò)展自動(dòng)生成

這里只說(shuō)明如何使用pgcrypto擴(kuò)展自動(dòng)生成UUID Type主鍵.

數(shù)據(jù)庫(kù)方面

通過(guò)調(diào)用 pgcrypto 擴(kuò)展模塊中的 gen_random_uuid() 函數(shù)可以生成UUID. 要使用該函數(shù), 首先需要?jiǎng)?chuàng)建擴(kuò)展:

CREATE EXTENSION pgcrypto;  

生成UUID

SELECT gen_random_uuid(); 

作為主鍵使用

CREATE SCHEMA IF NOT EXISTS developerworks;  

CREATE TABLE developerworks.contacts (  
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT,
email TEXT
);

插入測(cè)試數(shù)據(jù)

INSERT INTO developerworks.contacts (name,email) VALUES  
("Dr Nic Williams","drnic"),
("Brian Mattal","brian"),
("Wayne E. Seguin","wayneeseguin"),
("Long Nguyen","long"),
("Bill Chapman","bill"),
("Chris Weibel","chris"),
("Jeremey Budnack","jrbudnack"),
("Ruben Koster","rkoster"),
("Jamie Van Dyke","jamie"),
("Quintessence Anx","qanx"),
("McGowan","mcg"),
("高,秀嬌 (XJ)","xj"),
("Geoff Franks","geoff"),
("Van Nguyen","vnguyen"),
("John Longanecker","jlonganecker")
;

查詢結(jié)果

SELECT * FROM developerworks.contacts; 

遷移腳本定義
defmodule Jianpan.Repo.Migrations.CreatePrefixNodes do
  use Ecto.Migration

  def change do
    create table(:prefix_nodes, primary_key: false) do
      add :id, :uuid, primary_key: true, default: fragment("gen_random_uuid()")
      add :order, :integer
      add :name, :string
      add :is_deleted, :boolean, default: false, null: false
      add :parent_id, references(:prefix_nodes, type: :uuid, on_delete: :delete_all)

    end
    create index(:prefix_nodes, [:parent_id])

  end
end
參考資料

http://websymphony.net/blog/2...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/38968.html

相關(guān)文章

  • Elixir Ecto: 模型的嵌入(Embed)

    摘要:及其以上版本可以存儲(chǔ)類似這樣的非結(jié)構(gòu)化數(shù)據(jù)作為一個(gè)的數(shù)據(jù)封裝器提供了這些非結(jié)構(gòu)話的數(shù)據(jù)到原生數(shù)據(jù)類型的序列化和反序列化嵌入的記錄具有所有常規(guī)模型所具有的東西比如結(jié)構(gòu)化的字段生命周期回調(diào)變更集下面研究如何把結(jié)構(gòu)嵌入到模型當(dāng)中使用嵌入單個(gè)結(jié)構(gòu)可 Postgres 9.4 及其以上版本可以存儲(chǔ)類似 arrays, json, jsonb 這樣的非結(jié)構(gòu)化數(shù)據(jù). Ecto 作為一個(gè) Elixir...

    ningwang 評(píng)論0 收藏0
  • Elixir Ecto: Postgresql插入二進(jìn)制數(shù)據(jù)

    摘要:本文以用一個(gè)在數(shù)據(jù)庫(kù)中保存圖片信息為例展示如何向中插入二進(jìn)制數(shù)據(jù)首先我們要知道中唯一一種二進(jìn)制數(shù)據(jù)的類型為表示字節(jié)數(shù)組或字節(jié)序列對(duì)應(yīng)于和中的下面是一個(gè)示例遷移腳本這里也可以為實(shí)際上在執(zhí)行數(shù)據(jù)庫(kù)中字段的類型就是當(dāng)然除了圖片文件以外你還 本文以用一個(gè)在數(shù)據(jù)庫(kù)中保存圖片信息為例, 展示如何向 Postgresql 中插入二進(jìn)制數(shù)據(jù). showImg(https://segmentfault....

    CarterLi 評(píng)論0 收藏0
  • Elixir Ecto: 使用Geo庫(kù)操作空間數(shù)據(jù)(地理坐標(biāo))

    摘要:簡(jiǎn)介數(shù)據(jù)格式空間數(shù)據(jù)的文本標(biāo)識(shí)空間數(shù)據(jù)的二進(jìn)制標(biāo)識(shí)基于對(duì)象表示法的地理空間信息數(shù)據(jù)交換格式的庫(kù)提供了上述三種格式的相互轉(zhuǎn)換函數(shù)配置添加依賴配置擴(kuò)展創(chuàng)建刪除擴(kuò)展的移植腳本腳本內(nèi)容執(zhí)行移植插入數(shù)據(jù)軌跡點(diǎn)粵獲取經(jīng)緯度粵查詢聯(lián)系如何查詢字段例 簡(jiǎn)介 數(shù)據(jù)格式 Abbr Fullname Description WKT Well Known Text 空間數(shù)據(jù)的文本標(biāo)識(shí) WKB ...

    Blackjun 評(píng)論0 收藏0
  • Elixir Ecto: PostgreSQL大自增長(zhǎng)主鍵的設(shè)置

    摘要:要解決的問(wèn)題數(shù)據(jù)庫(kù)中存儲(chǔ)的行數(shù)超過(guò)了類型所能容納的數(shù)量因此需要采用類型的整數(shù)作為主鍵的取值范圍為到的取值范圍為到完整的字段的數(shù)據(jù)類型可以參考這里遷移腳本要點(diǎn)的參數(shù)要設(shè)置為通過(guò)宏指定主鍵列類型為模型的聲明要點(diǎn)主鍵要聲明為類型完 要解決的問(wèn)題 數(shù)據(jù)庫(kù)中存儲(chǔ)的行數(shù)超過(guò)了 serial 類型所能容納的數(shù)量, 因此需要采用 bigserial 類型的整數(shù)作為主鍵serial 的取值范圍為: 1...

    yvonne 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<