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

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

6
ไฟล์ INI หรือ Registry หรือไฟล์ส่วนตัว?
ฉันต้องการบันทึกการกำหนดค่าของโครงการซึ่งรวมถึง ขนาดหน้าจอ ตำแหน่งหน้าจอ เส้นทางโฟลเดอร์ การตั้งค่าผู้ใช้และอื่น ๆ สถานที่มาตรฐานที่คุณสามารถบันทึกสิ่งเหล่านี้คือค่าการกำหนดค่าคือ: Registry ไฟล์ INI ไฟล์ส่วนบุคคล (เช่น * .cfg) คุณเลือกระหว่างสถานที่เหล่านี้อย่างไร นอกจากนี้ยังมีข้อดีและข้อเสียของการใช้ใด ๆ ของพวกเขา?

2
การแยกแบบจำลองโดเมน / การติดตานี้มักจะไม่สะดวกหรือไม่
ฉันเข้าสู่แนวคิดเกี่ยวกับการออกแบบที่ขับเคลื่อนด้วยโดเมน (DDD) และพบหลักการบางอย่างที่แปลกประหลาดโดยเฉพาะอย่างยิ่งเกี่ยวกับการแยกโดเมนและรูปแบบการคงอยู่ นี่คือความเข้าใจพื้นฐานของฉัน: บริการบนชั้นแอปพลิเคชัน (จัดเตรียมชุดคุณสมบัติ) ร้องขอวัตถุโดเมนจากที่เก็บที่จำเป็นต้องใช้เพื่อทำหน้าที่ของมัน การนำไปใช้อย่างเป็นรูปธรรมของที่เก็บนี้ดึงข้อมูลจากที่เก็บข้อมูลที่ถูกนำไปใช้ บริการบอกวัตถุโดเมนซึ่งสรุปทางตรรกะทางธุรกิจเพื่อดำเนินงานบางอย่างที่แก้ไขสถานะของมัน บริการบอกที่เก็บเพื่อคงออบเจ็กต์โดเมนที่ถูกแก้ไข ที่เก็บข้อมูลจำเป็นต้องแมปวัตถุโดเมนกลับไปเป็นตัวแทนที่สอดคล้องกันในการจัดเก็บ ตอนนี้จากข้อสมมติข้างต้น โฆษณา 2: ดูเหมือนว่าแบบจำลองโดเมนจะโหลดวัตถุโดเมนทั้งหมด (รวมถึงเขตข้อมูลและการอ้างอิงทั้งหมด) แม้ว่าจะไม่จำเป็นสำหรับฟังก์ชันที่ร้องขอก็ตาม การโหลดอาจไม่สามารถทำได้หากมีการอ้างอิงวัตถุโดเมนอื่นเว้นแต่คุณจะโหลดวัตถุโดเมนเหล่านั้นด้วยและวัตถุทั้งหมดที่อ้างอิงในทางกลับกันเป็นต้น การโหลด Lazy คำนึงถึงซึ่งหมายความว่าคุณเริ่มทำการค้นหาวัตถุโดเมนของคุณซึ่งควรจะเป็นความรับผิดชอบของที่เก็บในตอนแรก เมื่อพิจารณาถึงปัญหานี้ดูเหมือนว่าวิธีการโหลดวัตถุโดเมนที่ถูกต้องจะมีฟังก์ชันการโหลดเฉพาะสำหรับแต่ละกรณีการใช้งาน ฟังก์ชั่นเฉพาะเหล่านี้จะโหลดข้อมูลที่จำเป็นโดยกรณีการใช้งานที่ถูกออกแบบมาเท่านั้น นี่คือสิ่งที่น่าอึดอัดใจที่เข้ามาเล่น: อย่างแรกฉันจะต้องรักษาจำนวนมากของการโหลดฟังก์ชั่นสำหรับแต่ละการใช้งานของพื้นที่เก็บข้อมูลและวัตถุโดเมนจะจบลงในรัฐที่ไม่สมบูรณ์ที่ดำเนินการnullในสาขาของพวกเขา ในทางเทคนิคหลังควรจะไม่มีปัญหาเพราะถ้าไม่ได้โหลดค่ามันไม่ควรจะจำเป็นต้องใช้ฟังก์ชั่นที่ร้องขอมันต่อไป ถึงกระนั้นมันก็น่าอึดอัดใจและอาจเป็นอันตรายได้ โฆษณา 3: วัตถุโดเมนจะตรวจสอบข้อ จำกัด ที่ไม่ซ้ำกันอย่างไรเมื่อการก่อสร้างถ้ามันไม่มีความคิดใด ๆ ของพื้นที่เก็บข้อมูล? ตัวอย่างเช่นถ้าฉันต้องการสร้างใหม่Userด้วยหมายเลขประกันสังคมที่ไม่ซ้ำกัน (ซึ่งได้รับ) ความขัดแย้งที่เร็วที่สุดจะเกิดขึ้นเมื่อขอให้พื้นที่เก็บข้อมูลบันทึกวัตถุเฉพาะในกรณีที่มีข้อ จำกัด ที่ไม่ซ้ำกันที่กำหนดไว้ในฐานข้อมูล มิฉะนั้นฉันสามารถหา a ที่Userมีประกันสังคมที่กำหนดและรายงานข้อผิดพลาดในกรณีที่มันมีอยู่ก่อนที่จะสร้างใหม่ แต่จากนั้นการตรวจสอบข้อ จำกัด จะอาศัยอยู่ในบริการไม่ใช่ในวัตถุโดเมนที่เป็นของพวกเขา ฉันเพิ่งรู้ว่าวัตถุโดเมนได้รับอนุญาตเป็นอย่างดีในการใช้ที่เก็บ (ฉีด) สำหรับการตรวจสอบ โฆษณา 5: …

2
มีการแยกวิเคราะห์ข้อมูลภาษาธรรมชาติที่คงอยู่
ฉันเพิ่งเริ่มทดลองใช้การประมวลผลภาษาธรรมชาติ (NLP) โดยใช้CoreNLP ของ Stanfordและฉันสงสัยว่าวิธีมาตรฐานในการจัดเก็บ NLP แยกวิเคราะห์ข้อมูลสำหรับแอปพลิเคชันการทำเหมืองข้อความคืออะไร วิธีหนึ่งที่ฉันคิดว่าน่าสนใจก็คือเก็บเด็กไว้ในรายการ adjacency และใช้ประโยชน์จากแบบสอบถามแบบเรียกซ้ำ (Postgres สนับสนุนสิ่งนี้และฉันคิดว่ามันใช้ได้ดีจริงๆ) แต่ฉันคิดว่าอาจมีวิธีมาตรฐานหลายวิธีในการทำเช่นนี้ขึ้นอยู่กับประเภทของการวิเคราะห์ที่ได้รับการรับรองจากคนที่ทำงานในสาขานี้มาหลายปี ดังนั้นกลยุทธ์การติดตามาตรฐานสำหรับข้อมูลที่แยกวิเคราะห์ NLP คืออะไรและมีการใช้งานอย่างไร

2
วัตถุ Persistence-Ignorant สามารถใช้การโหลดแบบ lazy ได้หรือไม่?
Persistence Ignoranceเป็นแอพพลิเคชั่นของหลักการความรับผิดชอบเดี่ยวซึ่งในทางปฏิบัติหมายความว่า Domain Objects ( DO ) ไม่ควรมีรหัสที่เกี่ยวข้องกับการคงอยู่ แต่ควรจะมีตรรกะของโดเมนเท่านั้น a) ฉันถือว่านี่หมายความว่ารหัสที่ติดต่อเลเยอร์ที่ต่ำกว่า (เช่นชั้นที่มีอยู่) อยู่นอกโมเดลโดเมนในคลาสอื่น ( OC ) ของเลเยอร์ตรรกะทางธุรกิจหรือไม่ b) หากการสันนิษฐานของฉันภายใต้a)ถูกต้องดังนั้นDOพูดว่าCustomerไม่มีวิธีการเช่นGetCustomersหรือGetCustomerByID? c) หากสมมุติฐานของฉันภายใต้a)และb)ถูกต้องและสมมติว่าCustomerวัตถุโดเมนใช้การโหลดแบบขี้เกียจสำหรับคุณสมบัติบางอย่างนั้นCustomerตรรกะภายในของบางจุดจะต้องติดต่อOCซึ่งจะดึงข้อมูลที่ได้รับการแก้ไข แต่ถ้าCustomerต้องการติดต่อOCเพื่อรับข้อมูลที่ถูกหักล้างเราไม่สามารถอ้างสิทธิ์ได้จริงๆว่า Domain Objects ไม่มีตรรกะที่เกี่ยวข้องกับการคงอยู่หรือไม่! ขอบคุณ ตอบกลับไปยัง jkohlhepp 1) ผมถือว่าOrderProviderและCustomerProviderชั้นเรียนที่มีอยู่ภายในชั้นตรรกะทางธุรกิจ? 2) ฉันรวบรวมจากคำตอบของคุณว่าสมมติฐานของฉันภายใต้ข)ถูกต้องหรือไม่ 3) ... ฉันจะตรวจสอบเพื่อดูว่าฟิลด์คำสั่งซื้อส่วนตัวบางส่วนมีการเติมข้อมูลหรือไม่หรือไม่ ถ้ามันเป็นโมฆะ ... แต่เท่าที่ฉันสามารถบอกได้ทันทีที่รหัสโดเมนจำเป็นต้องตรวจสอบว่าorderมีการเติมข้อมูลในฟิลด์ส่วนตัวหรือไม่และถ้าไม่ติดต่อ OrderProvider เรากำลังละเมิดหลักการPIอยู่แล้ว!

2
Spring + Hibernate เลือกแทน EJB 3 หรือไม่
ฉันเข้าใจว่าเมื่อใดก็ตามที่โครงการ JEE ใหม่เริ่มต้นขึ้น (ซึ่งจะใช้เทคโนโลยีเหล่านี้) คนต้องการใช้การผสมผสานของ Spring + Hibernate แทนที่จะเป็น EJB 3 ดูเหมือนว่าผู้เขียนโปรแกรมรุ่นเยาว์จะได้รับคำแนะนำให้ทำเช่นนั้นแทนที่จะเป็น EJB การตั้งค่าส่วนตัวนี้หรือมีเหตุผลที่เกี่ยวข้องหรือไม่ (เช่นแผลเป็นส่วนบุคคลที่สร้างโดยรุ่น EJB ก่อนหน้าซึ่งทำให้เกิดความไม่ไว้วางใจใน EJB หรือเทคโนโลยีขยายตัวเมื่อเทียบกับเหตุผลด้านประสิทธิภาพหรือเส้นโค้งการเรียนรู้)

2
ฉันควรใช้เลเยอร์ระหว่างบริการและพื้นที่เก็บข้อมูลสำหรับสถาปัตยกรรมสะอาด - สปริง
ฉันกำลังทำงานในสถาปัตยกรรมมันจะให้ api ที่เหลือสำหรับเว็บไคลเอ็นต์และแอพมือถือ ฉันกำลังใช้สปริง (สปริง mvc, สปริงข้อมูล jpa, ... ฯลฯ ) รูปแบบโดเมนนั้นมีรหัสด้วย JPA ฉันพยายามที่จะใช้แนวคิดบางอย่างของสถาปัตยกรรมที่สะอาด ( https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html ) ไม่ใช่ทั้งหมดเพราะฉันจะคงรูปแบบโดเมน jpa ไว้ การไหลที่แท้จริงผ่านเลเยอร์คือ: ส่วนหน้า <--> บริการ API -> บริการ -> พื้นที่เก็บข้อมูล -> ฐานข้อมูล ส่วนหน้า : เว็บไคลเอ็นต์แอปมือถือ บริการ API : Rest Controllers ที่นี่ฉันใช้ตัวแปลงและ dto's และบริการโทร บริการ : การเชื่อมต่อกับการใช้งานและมีตรรกะทางธุรกิจ พื้นที่เก็บข้อมูล : ส่วนต่อประสานที่เก็บข้อมูลที่มีการใช้งานโดยอัตโนมัติ (ทำโดย data …

2
Ruby on Rails เป็นวิธีการบันทึกภาพอย่างไร
ฉันพัฒนาบนiOSและฉันเปลี่ยนจากแบ็กเอนด์PHPเป็น Ruby on Rails รูปแบบการแลกเปลี่ยนเป็นJSON การค้นหาอย่างรวดเร็วของ Google สำหรับ 'บันทึกภาพในราง' มีเกือบทุกผลลัพธ์ที่พูดคุยเกี่ยวกับการบันทึกข้อมูลภาพเป็น blobs ไปยังฐานข้อมูล ฉันอาจเข้าใจผิด แต่ฉันรู้สึกว่าการบันทึกข้อมูลภาพในฐานข้อมูลเป็นการสูญเสียเวลาและพื้นที่อย่างมาก (ซึ่งต่างจากการบันทึกลิงก์ไปยังตำแหน่งไฟล์ ('/img/subcat/4656.png') . ใน PHP เป็นมาตรฐานที่ค่อนข้างดีในการรับข้อมูลสร้างชื่อไฟล์บันทึกไฟล์นั้นลงดิสก์และอัปเดตฐานข้อมูลด้วยตำแหน่งของรูปภาพบนดิสก์ นี่เป็นสิ่งเดียวกันสำหรับ Ruby on Rails หรือว่ามีฟังก์ชั่นภาพ ActiveRecord ในตัวที่ฉันไม่ทราบ?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.