คำถามติดแท็ก uuid


2
ฉันจะจัดทำดัชนี UUID ใน Postgres ได้อย่างไร
ฉันใหม่กับ PostgreSQL และค่อนข้างใหม่สำหรับฐานข้อมูลโดยทั่วไป มีวิธีที่กำหนดไว้ว่าเราควรทำดัชนีค่าUUIDใน Postgres หรือไม่? ฉันแยกระหว่างการใช้การแฮชและการใช้คู่กรณีเว้นแต่ว่ามีบางอย่างในตัวที่ใช้โดยอัตโนมัติ สิ่งที่ฉันใช้คือการจัดการข้อมูลจำนวนมหาศาล ดัชนี "text_ops" ตระกูลโอเปอเรเตอร์ SP-GiST ใช้ trie เนื่องจาก UUID นั้นค่อนข้างยาวและแตกต่างกันมากเสียงเหล่านี้น่าดึงดูดแม้ว่าฉันจะทำการค้นหาแบบเต็มเท่านั้น นอกจากนี้ยังมีตัวเลือกแฮช Hashing คือ O (1) และฉันไม่จำเป็นต้องทำการเปรียบเทียบใด ๆ นอกเหนือจากความเท่าเทียมกันแน่นอน แต่เนื่องจาก UUID ค่อนข้างยาวฉันกลัวว่าการสร้างแฮชจากพวกเขาจะเสียเวลามาก หรือสิ่งนี้ขึ้นอยู่กับระบบมากเกินไปและใช้เฉพาะหรือไม่ ฉันควรใช้bigserialในกรณีส่วนใหญ่ แต่ฉันถูกบอกให้ใช้uuidสำหรับเรื่องนี้ เราต้องการuuidเพราะเราอาจมีเซิร์ฟเวอร์หลายเครื่องที่ใช้ฐานข้อมูลที่แตกต่างกันดังนั้นจึงไม่มีการรับประกันว่าเราจะมี bigint ที่ไม่ซ้ำกัน เราสามารถใช้ลำดับที่แตกต่างกัน (และ seed) สำหรับแต่ละเซิร์ฟเวอร์ แต่ก็ยังไม่ยืดหยุ่นเท่ากับ UUID ตัวอย่างเช่นเราจะไม่สามารถโยกย้ายรายการฐานข้อมูลจากเซิร์ฟเวอร์หนึ่งไปยังเซิร์ฟเวอร์อื่นโดยไม่ต้องแปลง ID และการอ้างอิงของพวกเขาทุกที่
26 postgresql  index  uuid 

2
มีบทลงโทษสำหรับการใช้ BINARY (16) แทนที่จะเป็น UNIQUEIDENTIFIER หรือไม่?
ฉันเพิ่งได้รับมรดกฐานข้อมูล SQL Server ที่ใช้BINARY(16)แทนUNIQUEIDENTIFIERการจัดเก็บ Guids มันทำสิ่งนี้สำหรับทุกสิ่งรวมถึงกุญแจหลัก ฉันควรจะกังวลหรือไม่

2
จุดประสงค์ของคอลัมน์ Row_GUID คืออะไร
ฉันขุดในฐานข้อมูล AdventureWorks2012 และดู Row_GUID ที่ใช้ในหลายตาราง คำถามของฉันมี 2 ส่วน: เมื่อใดที่ฉันควรรวมคอลัมน์ Row_GUID การใช้และประโยชน์ของคอลัมน์ Row_GUID คืออะไร
18 sql-server  uuid 

2
การแทนค่าภายในของ SQL Server UniqueIdentifier / GUID
เพื่อนร่วมงานของฉันส่งคำถามที่น่าสนใจมาให้ฉันซึ่งฉันไม่สามารถอธิบายได้ทั้งหมด เขารันโค้ดบางส่วน (รวมอยู่ด้านล่าง) และได้ผลลัพธ์ที่ไม่คาดคิดมาบ้าง เป็นหลักเมื่อแปลงUniqueIdentifier(ซึ่งฉันจะอ้างถึงGuidจากที่นี่จาก) เป็นประเภทbinary(หรือvarbinary) ลำดับของครึ่งแรกของผลลัพธ์จะย้อนกลับ แต่ครึ่งหลังไม่ใช่ ความคิดแรกของฉันคือการ endianness ของระบบเป็นสาเหตุและที่Guidแสดงถูกเก็บรักษาไว้ แต่binaryแบบฟอร์มไม่รับประกัน เห็นได้ชัดว่านี่เป็นรายละเอียดการใช้งาน แต่ฉันสงสัยว่ามีคำอธิบายที่ดีหรือไม่ รหัส: declare @guid uniqueidentifier = '8A737954-CBEC-40CE-A534-2AFFB5A0E207'; declare @binary binary(16) = (select convert(binary(16), @guid)); select @guid as [GUID], @binary as [Binary]; ผล: GUID Binary 8A737954-CBEC-40CE-A534-2AFFB5A0E207 0x5479738AECCBCE40A5342AFFB5A0E207 อย่างที่คุณเห็นครึ่งแรกของGuid(ตลอดทาง40CE) จะถูกเก็บไว้ด้านหลังสำหรับแต่ละส่วน นั่นคือส่วนแรกของGuidย้อนหลังจากนั้นส่วนที่สองจากนั้นส่วนที่สาม แต่ลำดับของส่วนจะถูกเก็บรักษาไว้ Guidหลังจากนั้นสองคนสุดท้ายส่วนจะถูกเก็บไว้ในลำดับที่แน่นอนที่พวกเขาปรากฏใน มีใครอธิบายเรื่องนี้ได้บ้าง (ชุดทดสอบที่มีขนาดใหญ่กว่านั้นรวมอยู่ด้านล่าง) รหัส: declare @guid_to_binary table …

1
psql 9.5: gen_random_uuid () ไม่ทำงาน
SELECT gen_random_uuid() ผลิตผล ERROR: function gen_random_uuid() does not exist SQL state: 42883 Hint: No function matches the given name and argument types. You might need to add explicit type casts. ฉันรันCREATE EXTENSION pgcrypto;บนฐานข้อมูลที่เลือกและSELECT gen_random_bytes(1)ทำงานได้อย่างสมบูรณ์ ( gen_random_bytesไม่ทำงานบนฐานข้อมูลอื่นที่pgcryptoไม่ได้สร้างส่วนขยายด้วยตนเอง) % psql --version psql (PostgreSQL) 9.5.3 รุ่นของ Ubuntu คือ 16.04
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.