ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

2
มีสิ่งต่างๆเช่นประเภทข้อมูลที่กำหนดเองหรือไม่?
MySQL มีการสนับสนุนประเภทข้อมูลที่กำหนดเองหรือไม่? ตัวอย่างเช่นอาจมีการจัดเก็บรหัสไปรษณีย์ในvarchar(10)เขตข้อมูล แต่สามารถย่อเป็นได้intโดยมีตัวเลือกว่างเปล่าและตั้งค่าสถานะว่าเป็นรหัสไปรษณีย์ 5 หลักหรือ 5 + 4 หลัก มีวิธีติดตั้งชนิดข้อมูลที่ไร้รอยต่อสำหรับสิ่งต่าง ๆ หรือไม่? เท่าที่แอปพลิเคชันเกี่ยวข้องมันจะเป็นประเภทสตริงจะมีการตัดทอนข้อมูล (โดยมีหรือไม่มีการเตือน) หากแอปพลิเคชันผ่านข้อมูลที่ไม่ถูกต้อง สามารถใช้ฟังก์ชั่นที่กำหนดเองได้ (ตัวอย่างเช่นมีฟังก์ชั่นINET_ATONบิวด์อินสำหรับที่อยู่ IPv4 แต่ไม่อนุญาตให้ทำสิ่งต่าง ๆzip LIKE '12345%'ที่ควรทำดัชนีอย่างเหมาะสมการสนับสนุนที่เขียนอย่างดีสำหรับประเภทข้อมูลที่กำหนดเองจะอนุญาตให้ทำเครื่องหมายชนิดข้อมูล เป็นจัดเรียง. ดังนั้นขนาดกะทัดรัดเมื่อเรียงลำดับจะเรียงลำดับเช่นเดียวกับถ้ามันเป็นzip intzip varchar(10) สิ่งนี้จะทำให้คอลัมน์มีความกว้างคงที่มันจะอนุญาตให้มีการลดขนาดหน่วยเก็บข้อมูลตัวแปร 6 หรือ 10 ไบต์ลงเหลือ 4 ไบต์ของความกว้างคงที่ มีการใช้งานที่เกี่ยวข้องหลายอย่าง รหัสไปรษณีย์ ที่อยู่ IPv6 ฟิลด์การประทับเวลาที่กำหนดเองที่มีความแม่นยำระดับนาทีและความจุเกินกว่าที่2038มีการใช้พื้นที่เก็บข้อมูลน้อยกว่าdatetimeแต่ไม่จำเป็นต้องสนับสนุนวันที่ก่อนปีของการนำไปใช้ (กล่าวว่า min อาจเป็น 2007 หากเป็นวันที่เก่าที่สุดในระบบ) การประทับเวลาที่ใช้ DST (ซึ่งไม่มีอยู่จริง ) รัฐสองตัวอักษรของสหรัฐอเมริกาสามารถจัดเก็บในไบต์เดียว ความยาวENUMสามารถแยกออกเป็นประเภทข้อมูลที่กำหนดเองเพื่อให้DESCRIBEผลลัพธ์ที่ได้จะไม่ยุ่งเหยิงเมื่อมองด้วยการห่อทั้งหมด …

5
ข้อดี / ข้อเสียของการใช้หลายฐานข้อมูลเทียบกับการใช้ฐานข้อมูลเดียว
ฉันกำลังทำงานในโครงการใหม่ที่มีความต้องการใช้ฐานข้อมูล 7 ตัวโดยยืนยันว่าประสิทธิภาพเสถียรภาพการปรับให้เหมาะสมนั้นง่ายขึ้น ในขณะที่ฉันไม่เห็นด้วยฉันมีปัญหาในการรวบรวมอาร์กิวเมนต์ที่ดีเพื่อใช้ฐานข้อมูลเดียว (แยกตารางออกเป็นโดเมนแบบลอจิคัล) อาร์กิวเมนต์หนึ่งที่ฉันมีคือความสมบูรณ์ของข้อมูล (ฉันไม่สามารถใช้คีย์ต่างประเทศระหว่างฐานข้อมูล) ข้อดี / ข้อเสียที่ดีในการใช้ฐานข้อมูลเดียวหรือหลายฐานข้อมูลคืออะไร [สรุปแล้ว] ข้อโต้แย้งกับฐานข้อมูลหลายแห่ง: การสูญเสียความถูกต้องของข้อมูล (ไม่สามารถใช้ foreign key แทนฐานข้อมูล) สูญเสียคืนความสมบูรณ์ การเพิ่มความซับซ้อน (ผู้ใช้ db / บทบาท) เซิร์ฟเวอร์ / ฐานข้อมูลอัตราต่อรองขนาดเล็กจะลดลง Solutions: ใช้สกีมาเพื่อแยกโดเมน POC: ใช้ข้อมูลจำลองเพื่อพิสูจน์จุดในแผนการดำเนินการของ 7/1 db

3
มีการใช้ฐานข้อมูลผู้ใช้แบบมาตรฐานหรือไม่?
ฉันต้องใช้ฟังก์ชั่นผู้ใช้ส่วนตัวขั้นพื้นฐานสำหรับเว็บไซต์ของฉัน มีโครงสร้างมาตรฐานสำหรับฐานข้อมูลประเภทนี้หรือไม่? ไลค์มันเป็นเรื่องธรรมดาที่จะมีข้อมูลผู้ใช้และข้อมูลทั้งหมดในตารางเดียวโดยที่ผู้ใช้แต่ละคนมีแถวของตัวเองหรือข้อมูลนี้ควรถูกแบ่งออกเป็นตารางต่าง ๆ และเชื่อมโยงเข้าด้วยกัน (อาจจะมีประสิทธิภาพ?) ณ จุดนี้ แต่เห็นได้ชัดว่าฉันต้องการเข้ารหัสรหัสผ่านไม่นาน ฉันพยายามค้นหาสิ่งที่ฉันกำลังมองหาบน google แต่ไม่มีประโยชน์ เพียงแจ้งให้เราทราบหากคำถามนั้นต้องการคำชี้แจงเพิ่มเติมหรืออะไรก็ตาม

2
ฉันจะระบุได้อย่างไรว่าคอลัมน์ควรเพิ่มขึ้นอัตโนมัติใน pgAdmin
ฉันได้เริ่มเรียนรู้ pgAdmin III เพื่อจัดการฐานข้อมูล PostgreSQL แต่มันไม่ใช่แอพพลิเคชั่นที่ใช้งานง่าย หากฉันสร้างหรือสร้างตารางด้วย pgAdmin III ฉันจะเพิ่ม "ฟังก์ชันเพิ่มค่าอัตโนมัติ" ในคอลัมน์รหัสที่มีจำนวนเต็มประเภทได้อย่างไร

9
มีเครื่องมืออะไรในการปิดบังข้อมูล (MySQL, Linux) [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังมองหาเครื่องมือปิดบังข้อมูล (ฟรีอย่างดีโอเพนซอร์ส) มีอยู่จริงไหม? หมายเหตุ: คำถามที่เกี่ยวข้องนี้เกี่ยวข้องกับเครื่องมือในการสร้างข้อมูลทดสอบ แต่ในคำถามนี้ฉันสนใจที่จะเริ่มต้นด้วยข้อมูลจริงและปิดบังเพื่อใช้ในการทดสอบโดยไม่สูญเสียความสัมพันธ์พิเศษใด ๆ ที่ทำให้น่าสนใจสำหรับวัตถุประสงค์ในการทดสอบ ข้อมูลที่สร้างขึ้นนั้นใช้ได้สำหรับการทดสอบบางอย่าง แต่ข้อมูลในโลกแห่งความเป็นจริงจะทำให้เกิดปัญหาที่คุณไม่เคยคาดคิดมาก่อน เครื่องมือในการสร้างชุดข้อมูลขนาดใหญ่ของข้อมูลการทดสอบ
14 mysql  linux  testing 

2
เหตุใดฉันจึงไม่ได้รับการบันทึกขั้นต่ำเมื่อแทรกเข้าไปในตารางที่จัดทำดัชนี
ฉันกำลังทดสอบการแทรกการบันทึกน้อยที่สุดในสถานการณ์ที่แตกต่างกันและจากสิ่งที่ฉันอ่าน INSERT INTO SELECT เป็นฮีปที่มีดัชนีที่ไม่ใช่คลัสเตอร์โดยใช้ TABLOCK และ SQL Server 2016+ ควรบันทึกอย่างน้อยที่สุด แต่ในกรณีของฉันเมื่อทำสิ่งนี้ การบันทึกเต็มรูปแบบ ฐานข้อมูลของฉันอยู่ในรูปแบบการกู้คืนข้อมูลแบบง่ายและฉันได้รับการแทรกที่น้อยที่สุดใน heap โดยไม่มีดัชนีและ TABLOCK ฉันใช้การสำรองข้อมูลเก่าของฐานข้อมูล Stack Overflow เพื่อทดสอบและได้สร้างการทำซ้ำของตารางโพสต์ด้วยสคีมาต่อไปนี้ ... CREATE TABLE [dbo].[PostsDestination]( [Id] [int] NOT NULL, [AcceptedAnswerId] [int] NULL, [AnswerCount] [int] NULL, [Body] [nvarchar](max) NOT NULL, [ClosedDate] [datetime] NULL, [CommentCount] [int] NULL, [CommunityOwnedDate] [datetime] NULL, [CreationDate] [datetime] …

2
ทำไมการนับ (*) ช้าเมื่ออธิบายคำตอบจะรู้ได้อย่างไร
คำค้นหานี้: select count(*) from planner_eventใช้เวลานานมากในการรัน - นานมากฉันยอมแพ้และฆ่ามันก่อนที่มันจะเสร็จ อย่างไรก็ตามเมื่อฉันเรียกใช้explain select count(*) from planner_eventฉันสามารถเห็นคอลัมน์ในผลลัพธ์ด้วยจำนวนแถว (14m) ทำไมการอธิบายถึงสามารถรับจำนวนแถวได้ทันที แต่การนับ (*) ใช้เวลานานในการรัน
14 mysql  count  explain 

2
วิธีติดตามความคืบหน้าของการถ่ายโอนข้อมูล postrgresql ขนาดใหญ่
มีวิธีดูความคืบหน้าของการpg_dumpดำเนินการกับฐานข้อมูลขนาดใหญ่ (เช่น> 1GB) หรือไม่ การเพิ่ม-vตัวเลือกเพียงแค่ทิ้งข้อความบนหน้าจอ แต่ไม่ได้ให้ข้อมูลการติดตามที่มีความหมายกับฉันมากนัก

5
จะตรวจสอบใบรับรอง SSL ของเซิร์ฟเวอร์ PostgreSQL ได้อย่างไร
สมมติว่ามีเซิร์ฟเวอร์ PostgreSQL ทำงานอยู่และเปิดใช้งาน SSL แล้ว การใช้เครื่องมือ "มาตรฐาน" Linux และ PostgreSQL ฉันจะตรวจสอบใบรับรอง SSL ได้อย่างไร openssl x509 -text ...ฉันหวังสำหรับการส่งออกคล้ายกับสิ่งที่คุณจะได้รับจากการทำงาน และฉันหวังว่าจะได้รับคำตอบจากบรรทัดคำสั่งหนึ่งหรือสองซับดังนั้นฉันไม่ต้องหันไปใช้แพ็คเก็ตดมกลิ่น ฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์ PostgreSQL ดังนั้นฉันจึงไม่สามารถดูไฟล์การกำหนดค่าได้โดยตรง ฉันไม่ได้ลงชื่อเข้าใช้ superuser ดังนั้นฉันจึงไม่สามารถรับค่าของการssl_cert_fileตั้งค่าpg_read_fileได้ การใช้openssl s_client -connect ...ไม่ทำงานเนื่องจาก PostgreSQL ดูเหมือนจะไม่ต้องการจับมือ SSL ทันที จากการดูpsqlเอกสารอย่างรวดเร็วฉันไม่สามารถหาพารามิเตอร์บรรทัดคำสั่งที่ทำให้มันแสดงข้อมูลเมื่อเริ่มต้น (แม้ว่ามันจะแสดงข้อมูลตัวเลขบางอย่างให้ฉัน)

1
วิธีการแทนที่ข้อมูลตารางใน PostgreSQL
ฉันต้องการแทนที่เนื้อหาทั้งหมดของตารางโดยไม่กระทบกับSELECTคำสั่งที่เข้ามาในระหว่างกระบวนการ กรณีการใช้งานคือการมีตารางที่เก็บข้อมูลกล่องจดหมายที่แตกเป็นประจำและจะต้องเก็บไว้ในตาราง PostgreSQL มีไคลเอนต์จำนวนมากที่ใช้แอปพลิเคชันที่สืบค้นตารางเดียวกันตลอดเวลา โดยปกติฉันจะทำสิ่งที่ชอบ (pseudocode ขาเข้า) ... BEGIN TRANSACTION TRUNCATE TABLE INSERT INTO COMMIT แต่น่าเสียดายที่ตารางไม่สามารถอ่านได้ในระหว่างกระบวนการนี้ เนื่องจากเวลาที่ใช้INSERT INTOในการทำให้เสร็จสมบูรณ์ ตารางถูกล็อค ใน MySQL ฉันจะใช้RENAME TABLEคำสั่งatomic เพื่อหลีกเลี่ยงปัญหาเหล่านี้ ... CREATE TABLE table_new LIKE table; INSERT INTO table_new; RENAME TABLE table TO table_old, table_new TO table; *atomic operation* DROP TABLE table_old; ฉันจะบรรลุสิ่งนี้ใน PostgreSQL ได้อย่างไร สำหรับวัตถุประสงค์ของคำถามนี้คุณสามารถสมมติว่าฉันไม่ได้ใช้กุญแจต่างประเทศ
14 postgresql 

1
วิธีการจัดทำดัชนีของแบบสอบถามด้วยฟิลด์ WHERE IS NULL คืออะไร
ฉันมีตารางที่มีจำนวนมากแทรกการตั้งค่าหนึ่งของฟิลด์ ( uploaded_at) NULLเพื่อ จากนั้นภารกิจตามระยะเวลาจะเลือกสิ่งอันดับทั้งหมดWHERE uploaded_at IS NULLประมวลผลและอัปเดตตั้งค่าuploaded_atเป็นวันที่ปัจจุบัน ฉันควรจัดทำดัชนีตารางอย่างไร ฉันเข้าใจว่าฉันควรใช้ดัชนีบางส่วนเช่น: CREATE INDEX foo ON table (uploaded_at) WHERE uploaded_at IS NULL หรือว่าอย่างนั้น ฉันบิตสับสน NULLแต่ถ้ามันเป็นสิ่งที่ถูกต้องเพื่อดัชนีในเขตข้อมูลที่อยู่เสมอ หรือถ้ามันถูกต้องที่จะใช้ดัชนี b-tree Hash ดูเหมือนเป็นความคิดที่ดีกว่า แต่ล้าสมัยและไม่ได้รับการจำลองแบบผ่านการสตรีมการจำลองแบบ hot-standby คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก ฉันได้ทดลองเล็กน้อยด้วยดัชนีต่อไปนี้: "foo_part" btree (uploaded_at) WHERE uploaded_at IS NULL "foo_part_id" btree (id) WHERE uploaded_at IS NULL และตัววางแผนแบบสอบถามดูเหมือนว่าจะเลือกfoo_partดัชนีเสมอ explain analyseยังให้ผลลัพธ์ที่ดีขึ้นเล็กน้อยสำหรับfoo_partดัชนี: …

1
เป็นไปได้หรือไม่ที่จะแก้ไข definition ทริกเกอร์ที่มีอยู่ใน MySQL?
ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะอัพเดทคำจำกัดความของทริกเกอร์ใน MySQL ตัวอย่างเช่นฉันมีทริกเกอร์ T และฉันต้องการเพิ่มฟังก์ชันใหม่บางอย่างลงไป ข้อสันนิษฐานของฉันคือฉันต้องวางและสร้างใหม่ แนวทางปฏิบัติที่ดีที่สุดในการบริหารฐานข้อมูลสำหรับสถานการณ์ดังกล่าวคืออะไร
14 mysql  trigger  update 

1
ใช้ LDAP เพื่อค้นหาชื่อด้วย Oracle Instant Client
ส่วนหนึ่งเป็นผลมาจากปัญหาเกี่ยวกับเวอร์ชันที่ขัดแย้งกันหรือเป็นพยานเกี่ยวกับการติดตั้งไคลเอนต์ Oracle แบบเต็มทีมพัฒนาของฉัน (ซึ่งฉันเป็นสมาชิก) กำลังก้าวไปสู่การใช้Oracle Instant Clientและหลีกเลี่ยงการติดตั้งบนเครื่องพัฒนาของเรา โครงการใหม่ สิ่งนี้ได้ผลค่อนข้างดีถึงจุดที่เราปรับใช้กับการผลิตด้วยการตั้งค่านี้ เนื่องจากเราเป็นร้านค้า NET ส่วนใหญ่เราจึงใช้ไคลเอ็นต์ดั้งเดิม (พร้อมด้วย. NET wrappers) แทนที่จะเป็นจาวา ตอนนี้ไคลเอนต์ต้องการให้เราลงทะเบียนบริการฐานข้อมูลกับเซิร์ฟเวอร์ LDAP และใช้เซิร์ฟเวอร์ LDAP เพื่อค้นหาชื่อ พวกเขาได้จัดเตรียมsqlnet.oraและldap.oraไฟล์ ( และไฟล์กำหนดค่าการเข้ารหัสประกอบ) ที่ดูเหมือนว่าถูกต้อง โดยเฉพาะอย่างยิ่งsqlnet.oraไฟล์จะระบุ LDAP เป็นแหล่งที่เป็นไปได้สำหรับการค้นหาชื่อบริการสุทธิ: names.directory_path=(tnsnames,ldap) ฉันมั่นใจว่าเครื่องที่ฉันทำงานด้วยสามารถใช้ LDAP เพื่อเข้าถึงบริการได้เนื่องจากฉันสามารถทำได้โดยใช้ SQL Developer (ซึ่งอนุญาตให้ฉันป้อนข้อมูล LDAP โดยตรง) สมมติว่าถูกต้องฉันจะให้ไคลเอ็นต์ทันใจจดจำการกำหนดค่านี้และใช้ LDAP เพื่อค้นหาชื่อได้อย่างไร สิ่งที่ฉันได้ลองมาแล้ว ฉันได้ลองตั้งค่าTNS_ADMINตัวแปรสภาพแวดล้อมไปยังไดเรกทอรีที่มีไฟล์ที่ให้มาและในขณะที่วิธีนี้ใช้งานได้ดีในการทำให้ Instant Client รับรู้tnsnames.oraไฟล์ดูเหมือนว่าจะไม่เพียงพอที่จะเริ่มมองหา LDAP ต่อไปนี้เป็นผลลัพธ์ (โดยเปลี่ยนเส้นทางชื่อผู้ใช้และรหัสผ่าน): (คำสั่งต่อไปนี้เกิดขึ้นเป็น Windows …
14 oracle 

3
เปรียบเทียบฐานข้อมูล Postgres ที่คล้ายกันสองฐานเพื่อหาความแตกต่าง
ฉันดาวน์โหลดชุดข้อมูลที่เปิดเผยต่อสาธารณชนเป็นครั้งคราวในรูปแบบของ Postgres dBs ชุดข้อมูลเหล่านี้ได้รับการปรับปรุง / แก้ไข / ขยายเมื่อเวลาผ่านไปโดยโฮสต์ที่เก็บ มีคำสั่ง Postgres หรือเครื่องมือ (FOSS ในอุดมคติ) ที่สามารถแสดงความแตกต่างระหว่างฐานข้อมูล OLD และ NEW Postgres ได้หรือไม่? (ข้อสันนิษฐานการทำงานคือ 95% ของรายการไม่มีการเปลี่ยนแปลงและตารางและความสัมพันธ์จะไม่เปลี่ยนแปลง)

4
MySQL - เปลี่ยนตารางเพื่อใส่ UUID โดยอัตโนมัติ
ตกลงฉันรู้ว่าฉันเคยทำมาก่อน แต่ฉันไม่สามารถคิดออกมาได้ ฉันสร้างตาราง หนึ่งในคอลัมน์นั้นมีป้ายกำกับ "LogID" ซึ่งเป็นคีย์หลักด้วย ฉันจะแก้ไขเพื่อให้คอลัมน์นี้สร้าง UUID สำหรับแต่ละรายการใหม่ได้อย่างไร ขอบคุณ
14 mysql 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.