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

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

8
การจัดเก็บรายการที่สั่งซื้อซ้ำได้ในฐานข้อมูล
ฉันกำลังทำงานกับระบบสิ่งที่ปรารถนาซึ่งผู้ใช้สามารถเพิ่มรายการลงในรายการสิ่งที่ปรารถนาต่าง ๆ ได้และฉันวางแผนที่จะอนุญาตให้ผู้ใช้สั่งซื้อรายการอีกครั้งในภายหลัง ฉันไม่แน่ใจเกี่ยวกับวิธีที่ดีที่สุดในการเก็บข้อมูลนี้ในฐานข้อมูลในขณะที่ยังคงรวดเร็วและไม่เปลี่ยนเป็นระเบียบ (แอพนี้จะถูกใช้โดยฐานผู้ใช้ขนาดใหญ่พอสมควรดังนั้นฉันไม่ต้องการให้ลงไป เพื่อล้างสิ่งต่าง ๆ ) ตอนแรกฉันลองpositionคอลัมน์ แต่ดูเหมือนว่ามันจะไม่มีประสิทธิภาพเลยที่จะต้องเปลี่ยนค่าตำแหน่งของไอเท็มอื่นทุกรายการเมื่อคุณเลื่อนมันไปมา ฉันเคยเห็นคนที่ใช้การอ้างอิงตนเองเพื่ออ้างอิงถึงค่าก่อนหน้า (หรือถัดไป) แต่อีกครั้งดูเหมือนว่าคุณจะต้องอัปเดตรายการอื่น ๆ อีกมากในรายการ วิธีแก้ปัญหาอื่นที่ฉันเห็นคือใช้เลขทศนิยมและติดสิ่งของในช่องว่างระหว่างพวกเขาซึ่งดูเหมือนจะเป็นทางออกที่ดีที่สุด แต่ฉันแน่ใจว่าต้องมีวิธีที่ดีกว่า ฉันจะบอกว่ารายการทั่วไปจะมีมากถึง 20 รายการหรือมากกว่านั้นและฉันอาจจะ จำกัด ไว้ที่ 50 การสั่งซื้อซ้ำจะใช้การลากและวางและอาจทำได้ในแบตช์เพื่อป้องกันสภาพการแข่งขันและจาก คำขอ Ajax ฉันใช้ postgres (ที่ heroku) ถ้าเป็นเรื่องสำคัญ ไม่มีใครมีความคิดใด ๆ ไชโยสำหรับความช่วยเหลือใด ๆ !

2
กลยุทธ์ในการสร้างตัวระบุที่ไม่ซ้ำใครและปลอดภัยสำหรับใช้ในแอปพลิเคชันเว็บ "บางครั้งออฟไลน์"
ฉันมีโครงการบนเว็บที่ให้ผู้ใช้สามารถทำงานได้ทั้งออนไลน์และออฟไลน์และฉันกำลังมองหาวิธีในการสร้างรหัสที่ไม่ซ้ำกันสำหรับบันทึกในฝั่งไคลเอ็นต์ ฉันต้องการวิธีการที่ใช้งานได้ในขณะที่ผู้ใช้ออฟไลน์ (เช่นไม่สามารถพูดคุยกับเซิร์ฟเวอร์) ได้รับการรับรองว่าไม่ซ้ำใครและปลอดภัย ด้วย "ความปลอดภัย" ฉันกังวลเป็นพิเศษเกี่ยวกับลูกค้าที่ส่งรหัสซ้ำ (โดยไม่ประสงค์ดีหรืออย่างอื่น) และทำให้เกิดความเสียหายต่อความสมบูรณ์ของข้อมูล ฉันทำ googling มาบ้างหวังว่านี่จะเป็นปัญหาที่แก้ไขแล้ว ฉันไม่พบสิ่งใดที่ชัดเจนมากโดยเฉพาะในแง่ของวิธีการที่ใช้ในระบบการผลิต ฉันพบตัวอย่างบางส่วนสำหรับระบบที่ผู้ใช้จะเข้าถึงข้อมูลที่พวกเขาสร้างขึ้นเท่านั้น (เช่นรายการสิ่งที่ต้องทำที่เข้าถึงได้บนอุปกรณ์หลายเครื่อง แต่เฉพาะผู้ใช้ที่สร้างขึ้นเท่านั้น) น่าเสียดายที่ฉันต้องการบางสิ่งที่ซับซ้อนกว่านี้เล็กน้อย ฉันพบความคิดที่ดีจริงๆที่นี่ซึ่งสอดคล้องกับวิธีที่ฉันคิดว่าสิ่งต่าง ๆ อาจทำงานได้ ด้านล่างนี้เป็นโซลูชันที่เสนอของฉัน ข้อกำหนดบางประการ รหัสควรไม่ซ้ำกันทั่วโลก (หรืออย่างน้อยไม่ซ้ำกันภายในระบบ) สร้างขึ้นบนไคลเอนต์ (เช่นผ่านทางจาวาสคริปต์ในเบราว์เซอร์) ปลอดภัย (ดังที่อธิบายไว้ข้างต้นและอื่น ๆ ) ข้อมูลสามารถดู / แก้ไขโดยผู้ใช้หลายคนรวมถึงผู้ใช้ที่ไม่ได้เขียน ไม่ทำให้เกิดปัญหาเรื่องประสิทธิภาพที่สำคัญสำหรับแบ็กเอนด์ db (เช่น MongoDB หรือ CouchDB) โซลูชันที่เสนอ เมื่อผู้ใช้สร้างบัญชีพวกเขาจะได้รับ uuid ซึ่งสร้างขึ้นโดยเซิร์ฟเวอร์และทราบว่าไม่ซ้ำกันภายในระบบ รหัสนี้จะต้องไม่เหมือนกับโทเค็นการตรวจสอบความถูกต้องของผู้ใช้ ลองเรียกรหัสนี้ว่า "id token" ของผู้ใช้ เมื่อผู้ใช้สร้างเรกคอร์ดใหม่พวกเขาสร้าง uuid …

5
เมื่อใดที่เราควรใช้ MongoDB
MongoDB เป็นฐานข้อมูล NoSQL ที่ฉันพบว่าใช้ง่าย เมื่อเร็ว ๆ นี้ฉันต้องพัฒนาแอพพลิเคชั่นที่ต้องการรวบรวมข้อมูลโดยใช้คำร้องขอ HTTP และเก็บผลลัพธ์บางอย่างหลังจากประมวลผลข้อมูลและฉันพยายามใช้ MongoDB จากประสบการณ์นี้ฉันพบว่ามันดีกว่าการใช้มากกว่าฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิมและเนื่องจากฉันเป็นนักพัฒนาไม่ใช่ DBA งานของฉันจึงง่ายขึ้นมาก ถึงกระนั้นบางครั้งฉันก็ไม่แน่ใจว่าเมื่อไหร่ที่ฉันควรใช้ MongoDB แทนที่จะเป็นฐานข้อมูลเชิงสัมพันธ์แบบดั้งเดิมเช่น SQL Server หรือ MySQL ในกรณีนี้เมื่อเราสามารถใช้ MongoDB แทนฐานข้อมูลเชิงสัมพันธ์ มีบาง trully ใหญ่ข้อแม้เกี่ยวกับ MongoDB ที่ทำให้มันไม่เหมาะสมสำหรับสถานการณ์บางอย่าง?

3
ID ส่วนหลังควรเป็นสาธารณะหรือไม่ใน REST API
ขึ้นอยู่กับสิ่งที่ผู้ชายคนนี้พูดว่า: http://toddfredrich.com/ids-in-rest-api.html สมมติว่าเขาถูกต้องเกี่ยวกับการใช้ UUID เพื่อระบุทรัพยากร api จากนั้นฉันก็พบปัญหาในการพยายามใช้มันในลักษณะนี้คือ: class FooEntity { final String id = null; //auto-generated by my backend (mongodb), not shared final UUID uid = UUID.randomUUID(); //the resource id } (ระหว่างไคลเอนต์และเซิร์ฟเวอร์ถูกส่งและรับ DTO ไม่ใช่เอนทิตีฐานข้อมูล) ปัญหาตอนนี้คือidมันไม่มีประโยชน์อย่างที่ฉันไม่ได้ใช้อีกต่อไป ไคลเอนต์ทำการร้องขอด้วยuidเหตุใดฉันจึงรำคาญที่จะจัดการ 2 id ของ จากนั้นเราจะกลับไปสู่จุดเริ่มต้นเดียวกัน หากฉันตั้งค่า UUID เป็นคีย์หลัก ( _id) ฉันจะเปิดเผย ID เบื้องหลังให้กับสาธารณะ นอกจากนั้นยังมีหัวข้อประสิทธิภาพ ฉันอ่านว่าการจัดทำดัชนีโดย …

2
การแทรกเอกสาร JSON ด้วย "." ในคีย์ไปยัง MongoDB
ประการแรกนี่เป็นคำถามการออกแบบมากกว่าคำถามการเขียนโปรแกรม ฉันกำลังสร้างแอปพลิเคชันที่ฉันต้องดึงข้อมูล JSON ที่มีอยู่และใส่ลงใน MongoDB ฉันพบว่าเอกสาร JSON บางฉบับมีจุด.ในคีย์ของพวกเขา ฉันอ่านในเอกสาร MongoDB ที่.ไม่อนุญาตให้ใช้เครื่องหมายมหัพภาคเป็นคีย์ใน MongoDB ตามที่ใช้ในการสืบค้น ฉันไม่ได้ทำการแทรกจำนวนมากในเว็บแอปพลิเคชันมันเป็นการแทรกครั้งเดียว นอกจากนี้ฉันส่วนใหญ่จะดึงเอกสารทั้งหมดแทนที่จะสืบค้นบางส่วนของเอกสารเพราะฉันต้องการรับข้อมูลทั้งหมด ดังนั้นเมื่อพิจารณาความต้องการของฉันฉันมีสองตัวเลือกในการจัดเก็บเอกสาร JSON: ค้นหา JSON สำหรับช่วงเวลาในคีย์และหลบหนีจากนั้นใส่ลงใน MongoDB แปลง JSON ทั้งหมดให้อยู่ในรูปแบบ BSONและเก็บไว้เพื่อหลีกเลี่ยงความจำเป็นในการหลบหนีและแยกวิเคราะห์ JSON ด้วยตนเองเมื่อจำเป็นนอก MongoDB คุณช่วยบอกฉันได้ไหมว่าอะไรจะเป็นการออกแบบที่ดีกว่าเพราะฉันไม่สามารถหาข้อสรุปได้
14 json  mongodb 

1
ฉันจะแสดงแผนภาพสคีมาของฐานข้อมูล MongoDB ของฉันได้อย่างไร
ฉันมีฐานข้อมูล MongoDB ที่ฉันต้องการเอกสารการออกแบบสคีมาอย่างถูกต้อง ฉันรู้ว่า MongoDB เป็นฐานข้อมูล NoSQL และเป็น schemaless ตามธรรมชาติ แต่ฉันบังคับใช้ schema ผ่านแอปพลิเคชันของฉันและฉันต้องการที่จะเป็นตัวแทนในวิธีที่ดีกว่าการพิมพ์findOne()ผลลัพธ์ ฉันเห็นคนจำนวนมากที่ใช้ ER หรือ UML แต่ฉันไม่รู้สึกว่าเป็นแนวคิดที่ถูกต้องในการแสดงฐานข้อมูล NoSQL ของฉันเป็นฐานข้อมูลเชิงสัมพันธ์หรืออย่างน้อยก็ดูแปลก ตัวอย่างการใช้ UML: MongoDB: จะแสดงไดอะแกรมสคีมาในวิทยานิพนธ์ได้อย่างไร ฉันคิดว่าผู้คนจะใช้โมเดลที่แตกต่างกัน ฉันค้นหาแล้วและไกลที่สุดเท่าที่ฉันเคยเห็นคือMongoVUEที่เสนอมุมมองแบบต้นไม้ที่ดีเพื่อทำความเข้าใจกับสคีมา แต่มันไม่เป็นมิตรกับเครื่องพิมพ์ มีอย่างอื่นที่ฉันขาดหายไปสำหรับโลก NoSQL หรือไม่? หรือฉันควรพักผ่อนและติดกับ UML แบบดั้งเดิม?

6
MongoDB เป็นตัวเลือกที่ถูกต้องในกรณีของฉันหรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันจะสร้างโปรเจ็กต์แรกของฉันใน Rails ซึ่งประกอบด้วยในเว็บแอปที่ประกอบด้วย 3 ส่วนหลัก: ส่วนคงที่ที่ไม่มีการใช้ฐานข้อมูล ส่วนการลงทะเบียนผู้ใช้ซึ่งจะต้องใช้ฐานข้อมูลและฉันสามารถใช้ MySQL ได้เนื่องจากแถวของผู้ใช้แต่ละคนจะมีเขตข้อมูลเดียวกัน "แอป" ที่ผู้ใช้จะสามารถสร้างจัดการแก้ไข ... รายการในคอลเล็กชันและแบ่งปันกับผู้ใช้รายอื่น จะมีหลายประเภทรายการและแต่ละประเภทจะมีตัวเลือกต่างกันเช่นฉันอาจมีรายการ "วิดีโอ" พร้อมตัวเลือกต่อไปนี้: รหัส user_id collection_id หัวข้อ แพลตฟอร์ม (ถ้าฝัง) URL (ถ้าฝัง) ชื่อไฟล์ (หากโฮสต์บนแอปของฉัน) ขนาดไฟล์ (id โฮสต์บนแอปของฉัน) และรายการ "แผนที่": รหัส user_id collection_id หัวข้อ แพลตฟอร์ม (แผนที่ google, แผนที่ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.