ตัวเลือกที่ดีของฐานข้อมูลสำหรับแอปพลิเคชัน. NET ขนาดเล็กคืออะไร? [ปิด]


180

ฉันกำลังพัฒนาแอปพลิเคชันขนาดเล็กที่มี C # ใน. NET และฉันต้องการมีฐานข้อมูลขนาดเล็กน้ำหนักเบาซึ่งไม่ได้ใช้ทรัพยากรมากนัก

คุณช่วยกรุณารายการบางส่วนของที่ดีที่สุดโปรแกรมฐานข้อมูลที่รู้จักกันน้ำหนักเบา


คำตอบ:


192

14/06/2016อ๋อ ... ยังมีผู้โหวต: - /


17/03/2014ฉันยังคงได้รับการสนับสนุนเรื่องนี้โปรดคำนึงถึงวันที่ที่คำตอบเดิมได้รับ แม้ว่ารายการหลักสามรายการที่ปรากฏยังคงทำงานได้อย่างสมบูรณ์รายการจะมีแนวโน้มที่จะกลายเป็นเก่า มีเทคโนโลยีฐานข้อมูลเพิ่มเติมที่ไม่มีอยู่ในรายการ


คุณมีตัวเลือกที่เป็นที่รู้จักและฟรีทันทีสองสามแบบ:

การดาวน์โหลด SQL Server Compact มาพร้อมกับผู้ให้บริการ ADO.NET ที่คุณจะต้องอ้างอิงในรหัส การดาวน์โหลด SQLite อาจไม่มีอยู่นี่คือลิงค์:

http://sqlite.phxsoftware.com/

ทั้งสามใช้ SQL แม้ว่าจะมีข้อ จำกัด / นิสัยใจคอเล็กน้อย Management Studio ทำงานกับ Compact และ LocalDB ในขณะที่ SQLite คุณจะต้องใช้เครื่องมือ UI อื่นเช่นผู้ดูแลระบบ SQLite:

http://sqliteadmin.orbmu2k.de/

มีทางเลือก NoSQL เช่น:

ส่วนตัวฉันจะหลีกเลี่ยงการใช้ MS Access ในหน้าตัวเลือกฟรีอื่น ๆ คุณไม่สามารถผิดพลาดได้ด้วย LocalDB, Compact หรือ SQLite พวกเขาทั้งหมดเป็นฐานข้อมูลขนาดเล็กที่น่ารักที่ทำงานค่อนข้างเร็วใน RAM น้อย - การตั้งค่าส่วนตัวตามหลักศาสนาเกี่ยวกับความชอบของผลิตภัณฑ์ Microsoft ฉันคิดว่า :-)

ฉันใช้โปรแกรม Sterling สำหรับ Windows Phone เนื่องจากมันถูกสร้างขึ้นเพื่อใช้ Isolated Storage ฉันเพิ่งเห็นบทความเกี่ยวกับ RavenDb แต่ฉันสามารถบอกคุณได้ว่ามันเป็นกรอบการจัดเก็บเอกสารตาม JSON

เพื่อไม่ให้เกิดความสับสนกับสถานการณ์ (ไปกับ SQLite, SQL Server Express LocalDB หรือ SQL Server Compact Edition) แต่มีฐานข้อมูลแบบฝังตัว / โลคัลอื่น ๆ อยู่ที่นั่นบางตัวเป็นแบบเชิงสัมพันธ์อื่น ๆ เป็นแบบเชิงวัตถุ:

ไม่ใช่ทั้งหมดนี้ฟรี การสนับสนุน SQL / LINQ / in-proc นั้นแตกต่างกันไป รายการนี้มีไว้สำหรับความอยากรู้

ตอนนี้ยังมีKarvoniteด้วยเช่นกัน แต่ลิงค์ของรหัสคลังภาพเสีย เมื่อมันมีชีวิตอีกครั้งฉันจะมองหาสิ่งนี้สำหรับการพัฒนา WP7


11
+1 สำหรับ SQL Server CE แทนที่จะติดตั้งเซิร์ฟเวอร์ SQL ข้างแอพของคุณคุณสามารถใช้ SQL Server CE DLLs และมีไฟล์ฐานข้อมูลในไดเรกทอรีทำงานของแอปพลิเคชันของคุณ ง่าย
Phil

2
RavenDB เป็นฐานข้อมูลเอกสาร แต่ API นั้นมีประสิทธิภาพมากกว่าชื่อคู่และค่าที่ง่ายกว่ามาก ปัญหาคือมันไม่ฟรีสำหรับโครงการเชิงพาณิชย์ในกรณีที่คุณกำลังมองหาทางเลือกฟรี
JCallico

@JCallico ฉันจะยอมรับว่าฉันกำลังสรุปเล็กน้อยกับการสรุป แต่ฉันสงสัยว่าใครจะทำสิ่งที่ฉันพูดว่าเป็นข่าวประเสริฐ
Adam Houldsworth

@Brendan ยาวไม่มีการใช้ SQL ที่นั่นที่คุณสามารถพูดได้ว่าเป็นมาตรฐาน 100%
Pop Catalin

1
แทนที่จะปล่อยให้อ่านข้อความเล็ก ๆ ที่ด้านบนของคำตอบที่อธิบายว่าข้อมูลนั้นล้าสมัย การอัปเดตและ / หรือต่อท้ายคำตอบของคุณอาจทำได้ง่ายขึ้นและรวมถึงตัวอย่างบางส่วนของตัวเลือกที่มีอยู่ในปัจจุบัน
James Shaw

58

ผมอยากแนะนำให้SQLite เราใช้มันสำหรับแอพที่เราพัฒนาเกือบทุกที่ที่ฉันทำงานอยู่

มันเล็กและกะทัดรัด มันต้องการ DLL ที่จะอยู่ในไดเรกทอรีแอพ แต่คุณไม่จำเป็นต้องติดตั้งซอฟต์แวร์อื่นเช่น Access หรือ SQL Server นอกจากนี้ตามที่ danielkza ระบุไว้ด้านล่าง "SQLite เป็นสาธารณสมบัติดังนั้นคุณไม่ต้องกังวลเรื่องการออกใบอนุญาตเลย" ที่สามารถสร้างความแตกต่างใหญ่จริงๆ

คุณสามารถใช้System.Data.SQLiteหรือcsharp-sqliteเพื่อเข้าถึงมันในแอป C # โดยใช้วิธีการเดียวกับ SQL หรือ OleDB

คุณจะต้องมีแอปพลิเคชันเพื่อแก้ไข / จัดการฐานข้อมูล ที่ดีที่สุดในความคิดของฉันคือSQLite สตูดิโอ นี่คือสองสามเพิ่มเติม: ผู้
ดูแลระบบ
SQLite SQLite 2009 Pro (ด้านล่างของหน้า)
อัปเดต - 7/25/11 - แอป SQLite เพิ่มเติม (ถามคำถามที่นี่)

นี่คือเพิ่มเติมเกี่ยวกับ SQLite:
SQLite บน Wikipedia
Companies ที่ใช้ SQLite

ฟังก์ชั่นที่กำหนดเอง: นอกจากนี้หากคุณกำลังมองหาฟังก์ชั่นหลักของ SQLiteและไม่เห็นสิ่งที่คุณต้องการคุณสามารถสร้างฟังก์ชั่นที่กำหนดเองของคุณเอง นี่คือตัวอย่างสองตัวอย่าง:
จากตัวอย่างSO
Anoter


8
อีกหนึ่ง: SQLite เป็นโดเมนสาธารณะดังนั้นคุณไม่ต้องกังวลเกี่ยวกับสิทธิ์ใช้งานเลย
danielkza

@MikeWebb Sqlite จะทำงานร่วมกับแอปพลิเคชัน ClickOnce โดยไม่จำเป็นต้องติดตั้งบริการเพิ่มเติมหรืออะไร จะใช้งานได้หรือไม่หากใช้เครือข่ายร่วมกันสำหรับผู้ใช้หลายคนพร้อมกัน
Prokurors

1
@Prokurors - SQLite ทั้งหมดจำเป็นต้องเรียกใช้คือไฟล์ DLL ที่สอดคล้องกับภาษาที่คุณใช้ในโปรแกรมของคุณ (C ++, C #, ฯลฯ ) ไม่มีบริการหรือโปรแกรมอื่น ๆ ที่จำเป็น นอกจากนี้ควรทำงานบนเครือข่ายที่มีผู้ใช้พร้อมกัน เรามีสำเนาและทำงานบนเซิร์ฟเวอร์ที่ฉันทำงานและใช้งานได้ดี คุณสามารถดูข้อมูลเพิ่มเติมพร้อมกันได้ที่นี่: sqlite.org/lockingv3.html
Mike Webb

10

Firebird ที่ฝังตัวอาจเป็นตัวเลือกที่ดี

รุ่นฝังตัวเป็นรูปแบบที่น่าทึ่งของเซิร์ฟเวอร์ มันเป็นเซิร์ฟเวอร์ Firebird ที่มีคุณสมบัติครบถ้วนซึ่งบรรจุในไฟล์เพียงไม่กี่ไฟล์ มันง่ายในการปรับใช้เนื่องจากไม่จำเป็นต้องติดตั้งเซิร์ฟเวอร์

มีไดรเวอร์ดอทเน็ตที่ดีมาก


8

SQL Server Compact ถ้าคุณต้องการใช้โซลูชันอย่างเป็นทางการของ Microsoft นี่เป็นข้อดีของความสามารถในการใช้การจำลองแบบกับเซิร์ฟเวอร์ SQL ถ้าคุณต้องการสิ่งนั้น

SQLite ถ้าคุณต้องการสิ่งเล็ก ๆ น้อย ๆ ที่ง่ายและฟรี นี่คือสิ่งที่ android ใช้สำหรับเป็นฐานข้อมูลภายในดังนั้นจึงได้รับการสนับสนุนเป็นอย่างดีและมีการเชื่อม. NET ที่ดีมาก

ข้อดีอย่างหนึ่งของ SQLite ก็คือมันเป็นข้ามแพลตฟอร์ม ดังนั้นหากคุณต้องการโอนย้ายแอปพลิเคชันของคุณไปที่ Mono.NET คุณจะไม่ต้องทำการแก้ไขใด ๆ กับการใช้ฐานข้อมูล

ฉันไม่ชอบ MS Access สำหรับการแก้ปัญหานี้ แต่ผู้คนจำนวนมากได้รวมไว้ในคำตอบของพวกเขา มันถูก จำกัด เนื่องจากรูปแบบที่เป็นกรรมสิทธิ์และการพึ่งพาแพลตฟอร์ม มันมีข้อดีคือแม้ว่า คุณสามารถจัดการข้อมูลได้อย่างง่ายดายหากคุณมีสำเนาของ MS Access คุณสามารถสร้างแบบสอบถามแบบกราฟิกและสร้างมาโครได้ คุณสามารถรวมเข้ากับ MS Office ส่วนที่เหลือได้อย่างง่ายดาย

จาก SQLite เหล่านี้ทั้งหมดจะเป็นคำแนะนำของฉันเนื่องจากมันมีขนาดกะทัดรัดจัดทำเป็นเอกสารที่ดีและได้รับการสนับสนุนจากกองทัพผู้พัฒนาเพื่อนที่กำลังเติบโตโดยไม่คำนึงถึงแพลตฟอร์ม

แก้ไข

ฉันรู้ว่ามีตัวเลือกอื่นที่ทุกคนที่นี่ลืมพูดถึง

ตราบใดที่คุณไม่ต้องการตารางเชิงสัมพันธ์คุณสามารถใช้ไฟล์ CSV อ่านเป็นชุดข้อมูลผ่าน ADO.NET (มากกว่าคำแนะนำ lulz มากกว่าสิ่งอื่น แต่จะเหมาะสมในบางกรณีและไม่ต้องการไลบรารีเพิ่มเติมสำหรับการปรับใช้ MS


8

หากคุณกำลังสร้างโครงการที่มี .NET 4.0.2 หรือสูงกว่าและต้องการการสนับสนุนฐานข้อมูลที่ฝังพิจารณาSQL Server Express LocalDB

เป็นส่วนเพิ่มเติมที่ค่อนข้างใหม่สำหรับตระกูล Express ที่มีพื้นที่ติดตั้งขนาดเล็กและลดค่าใช้จ่ายในการจัดการ (เมื่อเทียบกับ Express รุ่นอื่น ๆ ) แต่ยังคงรักษาความสามารถในการโปรแกรมของ SQL Server นั่นคือแตกต่างจากรุ่น Compact, LocalDB ไม่จำเป็นต้องติดตั้งผู้ให้บริการ ADO.NET แยกต่างหากเพื่อสื่อสารกับ SQL

ดูต่อไปนี้สำหรับรายละเอียดเพิ่มเติม:

SQL Express v LocalDB v SQL Compact Edition (บล็อก MSDN)
SQL LocalDB vs SQL Server CE (สแต็คล้น)


7

สิ่งที่เกี่ยวกับhttp://en.wikipedia.org/wiki/NoSQL_(RDBMS) ?

โดยเฉพาะอย่างยิ่ง MongoDB สำหรับ. Net

http://www.mongodb.org/display/DOCS/Home


1
หรือโดยเฉพาะสำหรับ. NET คุณอาจต้องการดูRavenDB
marc_s

Mongo ในขณะที่น่ารักไม่ได้ทำงานแบบฝังตัวคุณต้องเริ่มกระบวนการเซิร์ฟเวอร์แยกต่างหากซึ่งอาจจะหนักไปหน่อยสำหรับจุดประสงค์ของ OP
Mike Woodhouse

Mongodb ไม่รองรับ sql ผู้ถามต้องการ "ที่ฉันสามารถบันทึกและดึงข้อมูลจากการสืบค้นด้วย SQL" และยิ่งไปกว่านั้น Mongodb ยังหิวอยู่ในความทรงจำ ฉันไม่แนะนำสำหรับกรณีการใช้งานนี้
ปีเตอร์ลอง

4

คุณสามารถใช้Sql Server Express Editionเป็นของฟรีและมีประสิทธิภาพเท่าเทียมกันจนและถ้าคุณต้องการฟังก์ชั่นเช่นmirroringฯลฯ มีลักษณะที่นี้


8
คำถามระบุว่า "ฉันไม่ต้องการอะไรที่ทรงพลัง" SQL Server Express ไม่ใช่ SQL Server รุ่น Light มันเป็นฐานข้อมูลขนาด จำกัด และมีผลกระทบอย่างมากต่อการเริ่มใช้งานพีซีของผู้ใช้เมื่อเริ่มให้บริการ มันเกินความจริงสำหรับคำถามนี้ SQL Server Compact เหมาะสมกว่า
Moog

2

ฉันใช้ db4o กับความสำเร็จ
ชุมชนไฟล์ขนาดใหญ่ใช้งานง่าย

http://www.db4o.com/

รายละเอียดใบอนุญาต

ใบอนุญาตสาธารณะทั่วไปฟรี db4o ได้รับอนุญาตภายใต้ GPL โดยค่าเริ่มต้น

สิทธิ์การใช้งาน GPL นั้นเหมาะอย่างยิ่งหากคุณวางแผนที่จะใช้ db4o ในบ้านหรือคุณวางแผนที่จะพัฒนาและแจกจ่ายงานดัดแปลงของคุณเองเป็นซอฟต์แวร์ฟรีภายใต้ GPL เช่นกัน

ใบอนุญาตการค้าจำเป็นต้องมีใบอนุญาตการค้าหากคุณต้องการฝัง db4o ในผลิตภัณฑ์ที่ไม่ใช่ GPL เชิงพาณิชย์ สิทธิ์การใช้งานเชิงพาณิชย์สามารถเข้าถึงบริการและการสนับสนุนระดับพรีเมียมได้


ฉันใช้ db4o เป็นเวลา 6 เดือนในปี 2012 หากมีวิธีการหลีกเลี่ยงปัญหาที่ไม่สามารถเข้าถึงข้อมูลเก่าหลังจากการเปลี่ยนแปลงรูปแบบวัตถุฉันจะลบคำตอบนี้ เท่าที่ฉันรู้มันเป็นเรื่องยากที่จะหลีกเลี่ยงการสูญเสียข้อมูลเก่าถ้าคุณเปลี่ยนวัตถุของคุณ บรรทัดล่างจะเก็บสำเนาสำรองข้อมูลของคุณไว้ที่อื่นในรูปแบบอื่นที่ไม่ใช่ db4o (ซึ่งเป็นกฎทั่วไปที่ค่อนข้างดีอยู่แล้ว)
Contango

2

ทางเลือกที่ไม่ได้รับการกล่าวถึงหากคุณไม่ต้องการให้เป็นฐานข้อมูลฟรีคือ VistaDB มันคือรหัสที่ได้รับการจัดการทั้งหมดมีคุณสมบัติมากมายสำหรับฐานข้อมูลแบบฝังและมีประสิทธิภาพที่ดีพอสมควร บริดจ์ที่ค่อนข้างดีระหว่าง SQL CE และ SQL Server Express เนื่องจากขั้นตอนการจัดเก็บ VistaDB ส่วนใหญ่ของคุณจะทำงานโดยไม่มีการดัดแปลงใน SQL Server Express ฉันพอใจกับการบริการลูกค้า ณ จุดนี้เช่นกัน ฉันใช้มันในที่ทำงาน ไม่มีบริการที่จะเริ่ม ฐานข้อมูลเปล่าอยู่ที่ประมาณ 1MB และ DLL ก็ค่อนข้างเบา มีผู้ให้บริการ ADO.NET และสิ่งต่าง ๆ ฉันชอบมันมาก

VistaDB


Hi! มันทำงานในสถานการณ์ผู้ใช้หลายคน? ตัวอย่างเช่นฉันสามารถเก็บ VistaDB นี้ไว้บนเครือข่ายแชร์และเข้าถึงพร้อมกันจากผู้ใช้หลายคนได้หรือไม่
Prokurors

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

ขอบคุณสำหรับข้อมูล! และเวอร์ชั่นใหม่ที่พวกเขาคาดหวัง 5 ฟังดูมีแนวโน้มดีมาก คุณลอง Entity Framework กับ VistaDB แล้วหรือยัง อาจจะสร้างไฟล์ VistaDB ด้วย EF Code ก่อน?
Prokurors

1
ฉันทำ แต่เมื่อประมาณ 3-4 ปีที่แล้ว ณ จุดนั้นฉันพบว่ามันทำงานได้ดีและนั่นเป็นประสบการณ์ครั้งแรกของฉันกับ EF ฉันถือว่ามันดีขึ้นแล้ว สิ่งเดียวที่ขาดหายไปในขณะนั้นคือเอกสารบางส่วนนั้นกระจัดกระจาย แต่นั่นเป็นช่วงการเปลี่ยนภาพหลังจากเจ้าของถูกซื้อตอนนี้
Rig

1
PS: อย่างน้อยตอนที่ฉันใช้มันพวกเขาก็เต็มใจที่จะให้ใบอนุญาตทดลองใช้งาน ฉันขอแนะนำให้คุณลองก่อนที่จะรับผิดชอบค่าใช้จ่าย
Rig

1

SQL Server Compact Edition นั้นดีที่สุดเพราะฟรีและมีขนาดเบาและรวมเข้าด้วยกัน


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