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

MySQL เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์แบบโอเพ่นซอร์ส

13
เหตุใดจึงต้องใช้ฐานข้อมูลแทนที่จะบันทึกข้อมูลลงดิสก์
แทนที่จะเป็นฐานข้อมูลฉันเพิ่งจัดลำดับข้อมูลของฉันไปยัง JSON บันทึกและโหลดลงดิสก์เมื่อจำเป็น การจัดการข้อมูลทั้งหมดถูกสร้างขึ้นในโปรแกรมซึ่งเร็วกว่าและง่ายกว่าการใช้คิวรี SQL ด้วยเหตุนี้ฉันจึงไม่เคยเข้าใจว่าทำไมฐานข้อมูลจึงมีความจำเป็น ทำไมหนึ่งควรใช้ฐานข้อมูลแทนการบันทึกข้อมูลลงดิสก์
193 database  sql  mysql  nosql 

12
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะเก็บไฟล์ขนาดใหญ่ (10 MB) ไว้ในฐานข้อมูล?
ขณะนี้ฉันกำลังสร้างเว็บแอปพลิเคชันที่อนุญาตให้ผู้ใช้จัดเก็บและแชร์ไฟล์ขนาด 1 MB - 10 MB สำหรับฉันแล้วดูเหมือนว่าการจัดเก็บไฟล์ในฐานข้อมูลจะทำให้การเข้าถึงฐานข้อมูลช้าลงอย่างมาก นี่เป็นข้อกังวลที่ถูกต้องหรือไม่? ควรเก็บไฟล์ไว้ในระบบไฟล์และบันทึกชื่อไฟล์และพา ธ ในฐานข้อมูลหรือไม่? มีแนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับการจัดเก็บไฟล์เมื่อทำงานกับฐานข้อมูลหรือไม่? ฉันทำงานใน PHP และ MySQL สำหรับโครงการนี้ แต่เป็นปัญหาเดียวกันสำหรับสภาพแวดล้อมส่วนใหญ่ ( Ruby on Rails , PHP , .NET ) และฐานข้อมูล (MySQL, PostgreSQL )

22
ขั้นตอนการจัดเก็บวิธีปฏิบัติที่ไม่ดีที่หนึ่งใน บริษัท ที่ปรึกษาด้านไอทีรายใหญ่ที่สุดในโลก?
ฉันทำงานในโครงการหนึ่งใน บริษัท ให้คำปรึกษาด้านไอทีชั้นนำของโลกและได้รับการบอกเล่าจาก DBA ว่าวิธีปฏิบัติที่ดีที่สุดในการจัดเก็บของรัฐไม่ใช่วิธี "ปฏิบัติที่ดีที่สุด" ตรงกันข้ามกับทุกสิ่งที่ฉันเรียนรู้ ขั้นตอนการจัดเก็บจะช่วยให้คุณสามารถนำโค้ดกลับมาใช้ใหม่และการห่อหุ้ม (สองเสาหลักของการพัฒนาซอฟต์แวร์) การรักษาความปลอดภัย (คุณสามารถให้ / เพิกถอนการอนุญาตในแต่ละโปรแกรมที่เก็บไว้) ปกป้องคุณจากการโจมตีด้วยการฉีด SQL เริ่มต้นด้วย SQL Server 2008 ที่แม้แต่แบบสอบถาม SQL ทั่วไปจะถูกคอมไพล์หากมีการเรียกใช้เวลาเพียงพอ) เรากำลังพัฒนาแอพที่ซับซ้อนโดยใช้วิธีการพัฒนาซอฟต์แวร์ Agile ทุกคนคิดเหตุผลที่ดีว่าทำไมพวกเขาไม่ต้องการใช้ procs ที่เก็บไว้? ฉันเดาว่า DBAs ไม่ต้องการรักษา procs ที่เก็บไว้ แต่ดูเหมือนว่าจะมีวิธีเชิงลบมากเกินไปที่จะพิสูจน์การตัดสินใจในการออกแบบ

3
ประโยชน์ของการบันทึกอย่างมีโครงสร้างเทียบกับการบันทึกขั้นพื้นฐาน
เรากำลังสร้างแอปใหม่และฉันต้องการรวมการบันทึกที่มีโครงสร้าง การตั้งค่าในอุดมคติของฉันจะเป็นสิ่งที่ต้องการSerilogสำหรับรหัส C # Bunyanของเราและสำหรับ JS ของเรา เหล่านี้จะป้อนเข้าสู่fluentdแล้วจะออกไปจำนวนของสิ่งใด ๆ elasticsearch + kibanaที่ผมคิดในตอนแรก เรามีฐานข้อมูล MySQL อยู่แล้วดังนั้นในระยะสั้นฉันสนใจที่จะติดตั้ง Serilog + Bunyan มากขึ้นและผู้ใช้สามารถใช้งานได้และเราสามารถเข้าสู่ระบบ MySQL ได้ในขณะที่เราใช้เวลาเพิ่มขึ้นเล็กน้อยและส่วนที่เหลือ อย่างไรก็ตามหนึ่งในนักเขียนโค้ดที่มีประสบการณ์มากกว่าของเราต้องการทำสิ่งที่ชอบ: การlog.debug("Disk quota {0} exceeded by user {1}", quota, user);ใช้log4netและจากนั้นก็เรียกใช้คำสั่งที่เลือกกับ MySQL เช่น:SELECT text FROM logs WHERE text LIKE "Disk quota"; ที่ถูกกล่าวว่าวิธีใดดีกว่าและ / หรือสิ่งใดที่เราต้องพิจารณาเมื่อเลือกประเภทของระบบบันทึก
110 c#  javascript  mysql  logging 

10
เหตุใด“ เลือก * จากตาราง” จึงถือว่าไม่เหมาะสม
เมื่อวานนี้ฉันกำลังคุยกับโปรแกรมเมอร์ "งานอดิเรก" (ฉันเป็นโปรแกรมเมอร์มืออาชีพ) เราเจองานบางอย่างของเขาและเขาบอกว่าเขามักจะค้นหาคอลัมน์ทั้งหมดในฐานข้อมูลของเขา (แม้ใน / ในเซิร์ฟเวอร์การผลิต / รหัส) ฉันพยายามโน้มน้าวเขาไม่ให้ทำ แต่ก็ยังไม่ประสบความสำเร็จ ในความคิดของฉันโปรแกรมเมอร์ควรถามสิ่งที่จำเป็นจริง ๆ เพื่อประโยชน์ของ "prettiness" ประสิทธิภาพและปริมาณการใช้งาน ฉันเข้าใจผิดกับมุมมองของฉัน?
96 database  sql  mysql  bad-code 

3
MariaDB และ MySQL ต่างกันอย่างไร
MariaDB และ MySQL ต่างกันอย่างไร ฉันไม่คุ้นเคยกับทั้งสองอย่างมาก ฉันเป็นนักพัฒนาส่วนใหญ่เป็นหลัก พวกมันคล้ายกันทางไวยากรณ์หรือไม่? ภาษาคิวรีสองภาษานี้แตกต่างกันที่ไหน วิกิพีเดียพูดถึงความแตกต่างระหว่างสิทธิ์ใช้งานเท่านั้น: MariaDB เป็นสาขาที่พัฒนาโดยชุมชนของฐานข้อมูล MySQL ซึ่งเป็นแรงผลักดันในการบำรุงรักษาสถานะว่างภายใต้ GPL ของชุมชนซึ่งต่างจากความไม่แน่นอนของสถานะใบอนุญาต MySQL ภายใต้ความเป็นเจ้าของปัจจุบันของ Oracle

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

6
ควรใช้ Latin-1 มากกว่า UTF-8 เมื่อพูดถึงการกำหนดค่าฐานข้อมูลหรือไม่?
เรากำลังใช้งาน MySQL ที่ บริษัท ที่ฉันทำงานอยู่และเราสร้างทั้งแอปพลิเคชันสำหรับลูกค้าและภายในโดยใช้ Ruby on Rails เมื่อฉันเริ่มทำงานที่นี่ฉันพบปัญหาที่ฉันไม่เคยพบมาก่อน ฐานข้อมูลบนเซิร์ฟเวอร์ที่ใช้งานถูกตั้งค่าเป็น Latin-1 ซึ่งหมายความว่า MySQL มีข้อผิดพลาดเมื่อใดก็ตามที่มีการป้อนข้อมูลของผู้ใช้ที่ผู้ใช้คัดลอกและวางอักขระ UTF-8 เจ้านายของฉันเรียกว่า "ตัวละครที่ไม่ดี" เหล่านี้เนื่องจากส่วนใหญ่เป็นตัวละครที่ไม่สามารถพิมพ์ได้และบอกว่าเราต้องถอดมันออก ฉันได้พบวิธีในการทำเช่นนี้ แต่ในที่สุดเราก็ลงเอยด้วยสถานการณ์ที่จำเป็นต้องใช้อักขระ UTF-8 นอกจากนี้ยังเป็นเรื่องยุ่งยากโดยเฉพาะอย่างยิ่งเนื่องจากดูเหมือนว่าทางออกเดียวที่ฉันเคยอ่านเกี่ยวกับปัญหานี้คือการตั้งค่าฐานข้อมูลเป็น UTF-8 (เหมาะสมกับฉัน) อาร์กิวเมนต์เดียวที่ฉันได้ยินมาสำหรับการใช้ภาษาละติน -1 คือการอนุญาตให้ใช้ตัวอักษร UTF-8 ที่ไม่สามารถพิมพ์ได้สามารถทำให้การค้นหาข้อความ / ข้อความแบบเต็มใน MySQL นี่เป็นเรื่องจริงหรือ มีเหตุผลอื่นอีกหรือไม่ที่เราควรใช้ Latin-1 แทน UTF-8 ฉันเข้าใจว่ามันยอดเยี่ยมและแพร่หลายมากขึ้น

11
ฉันควรกำหนดความสัมพันธ์ระหว่างตารางในฐานข้อมูลหรือเพียงแค่ในรหัส?
จากประสบการณ์ของฉันหลายโครงการที่ฉันเคยอ่านในอดีตไม่ได้มีคำจำกัดความความสัมพันธ์ในฐานข้อมูล แต่พวกเขาเพียงกำหนดไว้ในซอร์สโค้ด ดังนั้นฉันสงสัยว่าอะไรคือข้อดี / ข้อเสียของการกำหนดความสัมพันธ์ระหว่างตารางในฐานข้อมูลและในซอร์สโค้ด? และคำถามที่กว้างขึ้นเกี่ยวกับคุณสมบัติขั้นสูงอื่น ๆ ในฐานข้อมูลที่ทันสมัยเช่นน้ำตก, ทริกเกอร์, ขั้นตอน ... มีบางจุดในความคิดของฉัน: ในฐานข้อมูล: แก้ไขข้อมูลจากการออกแบบ ป้องกันข้อผิดพลาดของแอปพลิเคชันซึ่งอาจทำให้ข้อมูลไม่ถูกต้อง ลดเครือข่ายไปกลับแอปพลิเคชันเมื่อทำการแทรก / อัปเดตข้อมูลเนื่องจากแอปพลิเคชันต้องทำแบบสอบถามเพิ่มเติมเพื่อตรวจสอบความถูกต้องของข้อมูล ในรหัสที่มา: ยืดหยุ่นมากขึ้น ดีกว่าเมื่อขยายไปยังหลายฐานข้อมูลเนื่องจากบางครั้งความสัมพันธ์สามารถข้ามฐานข้อมูลได้ ควบคุมความสมบูรณ์ของข้อมูลได้มากขึ้น ฐานข้อมูลไม่จำเป็นต้องตรวจสอบทุกครั้งที่แอปพลิเคชันแก้ไขข้อมูล (ความซับซ้อนสามารถเป็น O (n) หรือ O (n log n) (?)) แต่จะมอบให้กับแอปพลิเคชันแทน และฉันคิดว่าการจัดการความสมบูรณ์ของข้อมูลในแอปพลิเคชันจะทำให้เกิดข้อความแสดงข้อผิดพลาดมากกว่าการใช้ฐานข้อมูล เช่น: เมื่อคุณสร้างเซิร์ฟเวอร์ API หากคุณกำหนดความสัมพันธ์ในฐานข้อมูลและมีบางอย่างผิดปกติ (เช่นไม่มีเอนทิตีที่อ้างอิง) คุณจะได้รับ SQL Exception พร้อมข้อความ วิธีที่ง่ายคือการคืน 500 ให้กับลูกค้าว่ามีข้อผิดพลาด "เซิร์ฟเวอร์ภายใน" และลูกค้าจะไม่ทราบว่าเกิดอะไรขึ้น หรือเซิร์ฟเวอร์สามารถแยกวิเคราะห์ข้อความเพื่อหาว่ามีอะไรผิดปกติซึ่งเป็นวิธีที่น่าเกลียดและผิดพลาดในความคิดของฉัน หากคุณปล่อยให้แอปพลิเคชันจัดการกับสิ่งนี้ …

4
กำลังสำรองฐานข้อมูล MySQL ใน Git เป็นความคิดที่ดีหรือไม่
ฉันพยายามปรับปรุงสถานการณ์การสำรองข้อมูลสำหรับแอปพลิเคชันของฉัน ฉันมีแอพพลิเคชั่น Django และฐานข้อมูล MySQL ฉันอ่านบทความแนะนำการสำรองฐานข้อมูลใน Git ในมือข้างหนึ่งฉันชอบมันจะเก็บสำเนาของข้อมูลและรหัสในการซิงค์ แต่ Git นั้นออกแบบมาสำหรับรหัสไม่ใช่สำหรับข้อมูล เช่นนี้มันจะทำงานพิเศษมากมายซึ่งต่างจากการถ่ายโอนข้อมูล MySQL ทุกการกระทำซึ่งไม่จำเป็นจริงๆ หากฉันบีบอัดไฟล์ก่อนจัดเก็บไฟล์ git จะยังคงแตกต่างกันหรือไม่? (ปัจจุบันไฟล์การถ่ายโอนข้อมูลถูกยกเลิกการบีบอัด 100MB, 5.7MB เมื่อบีบอัดไฟล์) แก้ไข: คำจำกัดความสคีมาของรหัสและฐานข้อมูลมีอยู่แล้วใน Git จริง ๆ แล้วเป็นข้อมูลที่ฉันกังวลเกี่ยวกับการสำรองตอนนี้
57 database  git  mysql  django 

4
ทำไมการใช้ MySQL สำหรับเว็บไซต์พจนานุกรมจึงเป็นความคิดที่ไม่ดี
ฉันวางแผนที่จะออกแบบและตั้งค่าฐานข้อมูลเพื่อจัดเก็บรายการพจนานุกรม (มักเป็นคำเดียว) และความหมายของพวกเขาในภาษาอื่น ตัวอย่างเช่นตารางอภิธานศัพท์จะต้องมีรายการและคำนิยามและแต่ละระเบียนในตารางมีการอ้างอิงถึงidของบันทึกที่เก็บไว้ในTag(แต่ละรายการจะต้องมีแท็กหรือหมวดหมู่) เนื่องจากข้อมูลของฉันมีโครงสร้างฉันคิดว่าการใช้ฐานข้อมูล SQL (เช่น MySQL) ไม่ใช่ความคิดที่แย่ แต่ผู้คนบอกว่า MongoDB นั้นดีกว่ามากสำหรับประสิทธิภาพ ที่ฝั่งไคลเอ็นต์แอปพลิเคชันจะต้องสามารถให้ช่องค้นหาด้วยการเติมข้อความอัตโนมัติซึ่งใช้ REST API ที่แบ็กเอนด์จัดหาให้ ปลอดภัยที่จะไปกับ MySQL ในสถานการณ์เช่นนี้หรือไม่? หรือฉันควรใช้ MongoDB หรือ ElasticSearch ของการแก้ปัญหาอื่น ๆ สำหรับเรื่องนี้? ควรมีการจัดเก็บและเข้าถึงบันทึกหลายแสนรายการด้วยวิธีนี้

2
การซิงโครไนซ์ข้อมูลในแอปมือถือ - อุปกรณ์หลายเครื่องผู้ใช้หลายคน
ฉันกำลังมองหาการสร้างแอพมือถือเครื่องแรกของฉัน หนึ่งในคุณสมบัติหลักของแอปพลิเคชั่นคืออุปกรณ์ / ผู้ใช้หลายคนจะสามารถเข้าถึงข้อมูลเดียวกันได้และทั้งหมดนี้จะมีสิทธิ์ CRUD ฉันเชื่อว่าสถาปัตยกรรมควรเกี่ยวข้องกับเซิร์ฟเวอร์กลางที่จัดเก็บข้อมูลทั้งหมด อุปกรณ์จะใช้ API เพื่อโต้ตอบกับเซิร์ฟเวอร์เพื่อดำเนินการข้อมูล (เช่นการเพิ่มบันทึกการแก้ไขบันทึกการลบบันทึก) ฉันจินตนาการถึงสถานการณ์ที่การซิงโครไนซ์ข้อมูลจะกลายเป็นปัญหา สมมติว่าแอปพลิเคชันควรทำงานเมื่อไม่ได้เชื่อมต่อกับอินเทอร์เน็ตดังนั้นจึงไม่สามารถสื่อสารกับเซิร์ฟเวอร์กลางนี้ได้ ดังนั้น: ผู้ใช้กอยู่ในสถานะออฟไลน์และแก้ไขบันทึก # 100 ผู้ใช้ B ออฟไลน์และแก้ไขบันทึก # 100 ผู้ใช้ C ออฟไลน์และลบบันทึก # 100 ผู้ใช้ C เข้าสู่สถานะออนไลน์ (สมมุติว่า # 100 ควรลบข้อมูลบนเซิร์ฟเวอร์) ผู้ใช้ A และ B ออนไลน์ แต่บันทึกที่พวกเขาแก้ไขไม่มีอยู่อีกต่อไป สถานการณ์ทุกประเภทที่คล้ายกับด้านบนสามารถเกิดขึ้นได้ สิ่งนี้จัดการโดยทั่วไปอย่างไร? ฉันวางแผนที่จะใช้ MySQL แต่ฉันสงสัยว่ามันไม่เหมาะสมสำหรับปัญหาดังกล่าว
42 database  mysql  data  mobile 

11
ทำไมการป้องกัน SQL injection ไม่ให้ความสำคัญสูง?
ใน Stack Overflow ฉันเห็นโค้ด PHP จำนวนมากในคำถามและคำตอบที่มีคำสั่ง MySQL ที่มีความเสี่ยงสูงต่อการถูกโจมตีจากการฉีด SQL แม้ว่าจะมีวิธีการพื้นฐานที่ใช้กันอย่างแพร่หลายมานานกว่าทศวรรษ มีเหตุผลหรือไม่ที่ข้อมูลโค้ดประเภทนี้ยังใช้อยู่ในปัจจุบัน?
39 php  mysql 

3
มีเหตุผลใดที่จะใช้ varchar บนคอลัมน์ข้อความในฐานข้อมูลหรือไม่?
เป็นvarcharเพียงเศษเล็กเศษน้อยจากก่อนหน้าtextนี้มาหรือมีกรณีการใช้งานที่คุณต้องการใช้varchar? (หรือcharสำหรับเรื่องนั้น .. ) (ฉันใช้ Postgres และ MySQL (MyISAM) ทุกวันดังนั้นนี่คือสิ่งที่ฉันสนใจมากที่สุด แต่คำตอบสำหรับฐานข้อมูลอื่นนั้นยินดีต้อนรับแน่นอน ^ _-)

1
ความแตกต่างระหว่างการจัดทำดัชนี btree และ rtree คืออะไร?
ฉันสังเกตเห็นใน MySQLWorkbench ว่าคุณสามารถเลือกวิธีการจัดเก็บดัชนีของคุณก่อนส่งต่อการออกแบบของคุณ ประเภทการจัดเก็บคือ: bTree RTree กัญชา จากการค้นคว้านี้ฉันพบข้อมูลบางอย่างที่อยู่เหนือหัวฉันดังนั้นฉันจึงมองหาข้อมูลที่เป็นประโยชน์เกี่ยวกับความแตกต่างระหว่างสิ่งเหล่านี้และ / หรือสาเหตุที่คุณควรเลือกอย่างใดอย่างหนึ่ง นอกจากนี้ฉันไม่เคยเลือกประเภทการจัดเก็บมาก่อนดังนั้นฉันคิดว่า MySQL กำลังเลือกประเภทการจัดเก็บเริ่มต้น (BTREE?)

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