Sqlite หรือ MySql? จะตัดสินใจอย่างไร? [ปิด]


96

มีกฎง่ายๆในการตัดสินใจว่าจะใช้ทั้งสองแบบใด?

และหากคุณเข้ายึดฐานข้อมูล Sqlite และระบบคาดว่าจะ "ใหญ่ขึ้นมาก" จะตัดสินใจได้อย่างไรว่าจะใช้ฐานข้อมูลหรือย้ายไปที่ MySql?


1
พิจารณา FirebirdEmbedded ซึ่งเป็นส่วนผสมที่ทรงพลังของทั้งสองอย่าง
Stefan Steiger

1
ปิดการลงคะแนนแบบกว้างเกินไป รายการที่ซ้ำกันอาจถูกลบ: stackoverflow.com/questions/3630/sqlite-vs-mysql
Ciro Santilli 郝海东冠状病六四事件法轮功

11
ตอนนี้เป็นเรื่องกว้าง แต่เมื่อโพสต์คำถามประเภทนั้นเป็นที่ยอมรับหรืออย่างน้อยก็ยอมรับได้ ฉันหวังว่าคำถามจะไม่ถูกลบเช่นเดียวกับคำถามที่อาจเกิดขึ้นซ้ำเพื่อให้คนอื่น ๆ ยังสามารถอ่านการสนทนาและคำแนะนำได้
Mawg กล่าวว่าคืนสถานะ Monica ใน

6
น่าเสียดายที่คำถามเหล่านั้นซึ่งมีผลกระทบและการมองเห็นสูง (ดูที่จำนวนโหวตที่เพิ่มขึ้นด้านล่าง) ถูกปิดโดย "จอภาพ" ของไซต์นี้ ซึ่งทำให้กระบวนการตรวจสอบทั้งหมดและตรวจสอบการเลือกค่อนข้างน่าสงสัย
francogrex

2
มาตรฐานค่านิยมและวัตถุประสงค์ของเว็บไซต์มีการเปลี่ยนแปลงตลอดหลายปีที่ผ่านมา "ตามความคิดเห็นเป็นหลัก" ไม่สามารถยอมรับได้อีกต่อไป ถ้าฉันต้องการถามวันนี้ฉันจะถามในsoftwarerecs.stackexchange.comไม่ใช่ที่นี่และจะแสดงรายการข้อกำหนดของฉันสำหรับฐานข้อมูลและรับคำแนะนำ ฉันเข้าใจว่าทำไมคำถามของฉันถึงถูกปิด แต่ฉันยังคงคิดถึงช่วงเวลาที่เราเคยมีแท็กหนังสือและคำว่า "ดีที่สุด" ในชื่อไม่ได้หมายถึงการปิดทันที: - / YMMV
Mawg บอกว่าคืนสถานะ Monica

คำตอบ:


105

ชุดคุณลักษณะของพวกเขาไม่เหมือนกันเลย Sqlite เป็นฐานข้อมูลแบบฝังซึ่งไม่มีความสามารถของเครือข่าย (เว้นแต่คุณจะเพิ่มเข้าไป) คุณจึงไม่สามารถใช้งานบนเครือข่ายได้

ถ้าคุณต้องการ

  • การเข้าถึงเครือข่าย - ตัวอย่างเช่นการเข้าถึงจากเครื่องอื่น
  • ระดับของการเกิดขึ้นพร้อมกันที่แท้จริงเช่นหากคุณคิดว่าคุณมีแนวโน้มที่จะต้องการเรียกใช้การสืบค้นหลายรายการพร้อมกันหรือเรียกใช้ปริมาณงานที่มีการเลือกจำนวนมากและการอัปเดตเพียงเล็กน้อยและต้องการให้ดำเนินการอย่างราบรื่นเป็นต้น
  • การใช้หน่วยความจำจำนวนมากเช่นเพื่อบัฟเฟอร์ส่วนต่างๆของฐานข้อมูล 1Tb ในหน่วยความจำ 32G ของคุณ

คุณต้องใช้ mysql หรือ RDBMS บนเซิร์ฟเวอร์อื่น ๆ

โปรดทราบว่า MySQL ไม่ใช่ทางเลือกเดียวและยังมีอื่น ๆ อีกมากมายที่อาจดีกว่าสำหรับแอปพลิเคชันใหม่ ๆ (เช่น pgSQL)

Sqlite เป็นซอฟต์แวร์ที่ดีมาก แต่ก็ไม่เคยอ้างว่าทำสิ่งเหล่านี้ที่เซิร์ฟเวอร์ RDBMS ทำ เป็นไลบรารีขนาดเล็กที่เรียกใช้ SQL บนไฟล์ในเครื่อง (โดยใช้การล็อกเพื่อให้แน่ใจว่ากระบวนการต่างๆจะไม่ทำให้ไฟล์เสียหาย) ได้รับการทดสอบอย่างดีจริงๆและฉันชอบมันมาก

นอกจากนี้หากคุณไม่สามารถเลือกสิ่งนี้ได้อย่างถูกต้องด้วยตัวเองคุณอาจต้องจ้างคนในทีมของคุณที่สามารถทำได้


ดังนั้นโดยพื้นฐานแล้ว sqllite จึงเป็นอีกทางเลือกหนึ่งในการเข้าถึงไฟล์ ms
dvdmn

2
สามคะแนนนี้คือสิ่งที่ Richard Hipp พูดไว้ที่: youtu.be/Jib2AmRb_rk?t=1693
Ciro Santilli 郝海东郝海东病六四事件事件

เพื่อความเรียบง่ายฉันมักจะมีซอฟต์แวร์เพียงชิ้นเดียวซึ่งเป็นผู้ใช้เพียงคนเดียวที่ได้รับอนุญาตให้เข้าถึงฐานข้อมูลแม้แต่แอปเครือข่ายที่ใช้ฐานข้อมูล MySql
Mawg กล่าวว่าคืนสถานะ Monica

60

ทีม sqlite เผยแพร่บทความอธิบายว่าเมื่อใดควรใช้ sqliteที่น่าอ่าน โดยทั่วไปคุณต้องการหลีกเลี่ยงการใช้ sqlite เมื่อคุณมีการเขียนพร้อมกันจำนวนมากหรือจำเป็นต้องปรับขนาดข้อมูลเป็นเทราไบต์ ในกรณีอื่น ๆ sqlite เป็นทางเลือกที่ดีอย่างน่าประหลาดใจสำหรับฐานข้อมูล "แบบดั้งเดิม" เช่น MySQL


12

SQLite out-of-the-box ไม่ได้มีคุณลักษณะครบถ้วนเกี่ยวกับการทำงานพร้อมกัน คุณจะประสบปัญหาหากคุณมีคำขอเว็บหลายร้อยรายการที่กดฐานข้อมูล SQLite เดียวกัน

คุณควรใช้ MySQL หรือ PostgreSQL อย่างแน่นอน

ถ้าเป็นโปรเจ็กต์คนเดียว SQLite จะติดตั้งได้ง่ายกว่า


เพื่อความเรียบง่ายฉันมักจะมีซอฟต์แวร์ชิ้นเดียวซึ่งเป็นผู้ใช้เพียงคนเดียวที่ได้รับอนุญาตให้เข้าถึงฐานข้อมูลแม้กระทั่งสำหรับแอปในเครือข่ายที่ใช้ฐานข้อมูล MySql แต่ obiovusly โดยเฉพาะอย่างยิ่งสำหรับ Sqlite
Mawg กล่าวว่าคืนสถานะ Monica

10

ฉันไม่กี่เซ็นต์สำหรับคำตอบที่ยอดเยี่ยมก่อนหน้านี้ เว็บไซต์ www.sqlite.org ทำงานบนฐานข้อมูล sqlite นี่คือลิงค์เมื่อผู้เขียน (Richard Hipp) ตอบคำถามที่คล้ายกัน


1
ขอบคุณสำหรับลิงค์ผู้เขียนคนเดียวกันยังคงใช้โต๊ะทำงานของตัวเองที่เขาทดสอบกับ Athlon 1600 แรม 1GB 5400RPM IDE ดิสก์ Redhat 7.3. เขาสรุปว่า: «ตอนนี้ฉันเชื่อว่า SQLite เหมาะสมสำหรับใช้เป็นฐานข้อมูลหลักในเว็บไซต์ที่มีผู้เข้าชมมากถึง 1 ล้านครั้งต่อวัน»
Rutrus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.