ใช้ XML เป็นที่เก็บข้อมูล [ปิด]


12

ฉันคิดเกี่ยวกับรูปแบบ XML และคำพูดต่อไปนี้:

“ XML ไม่ใช่ฐานข้อมูล มันไม่เคยตั้งใจจะเป็นฐานข้อมูล มันจะไม่เป็นฐานข้อมูล ฐานข้อมูลเชิงสัมพันธ์เป็นเทคโนโลยีที่ได้รับการพิสูจน์แล้วพร้อมด้วยประสบการณ์การใช้งานมานานกว่า 20 ปี พวกเขาเป็นของแข็งมั่นคงผลิตภัณฑ์ที่มีประโยชน์ พวกเขาจะไม่หายไป XML เป็นเทคโนโลยีที่มีประโยชน์มากสำหรับการย้ายข้อมูลระหว่างฐานข้อมูลที่แตกต่างกันหรือระหว่างฐานข้อมูลและโปรแกรมอื่น ๆ อย่างไรก็ตามมันไม่ได้เป็นฐานข้อมูล อย่าใช้อย่างเดียว "- XML ที่มีประสิทธิภาพ: 50 วิธีพิเศษในการปรับปรุง XML ของคุณโดยElliotte Rusty Harold (หน้า 230, ตอนที่ 4, รายการ 41, วรรคสอง)

สิ่งนี้ดูเหมือนจะเน้นว่า XML ไม่ควรใช้สำหรับการจัดเก็บข้อมูลและควรใช้สำหรับโปรแกรมเพื่อการทำงานร่วมกันของโปรแกรมเท่านั้น

โดยส่วนตัวแล้วฉันไม่เห็นด้วยและapp.configไฟล์ของ. NET ที่ใช้ในการจัดเก็บการตั้งค่าของโปรแกรมเป็นตัวอย่างของการจัดเก็บข้อมูลในไฟล์ XML อย่างไรก็ตามสำหรับฐานข้อมูลมากกว่าการกำหนดค่า ฯลฯ ไม่ควรใช้ XML

ในการพัฒนาประเด็นของฉันฉันจะใช้สองตัวอย่าง:
A) ข้อมูลเกี่ยวกับลูกค้าที่มีฟิลด์ทั้งหมดในระดับเดียวนั่นคือมีจำนวนฟิลด์ทั้งหมดที่เกี่ยวข้องกับลูกค้าหนึ่งรายที่ไม่มีลูก
B) ข้อมูลเกี่ยวกับการกำหนดค่าแอปพลิเคชัน และคุณสมบัติทำให้รู้สึกมาก

ดังนั้นคำถามของฉันคือนี่ยังเป็นคำสั่งที่ถูกต้องและเป็นที่ยอมรับในการจัดเก็บข้อมูลโดยใช้ XML หรือไม่

แก้ไข: ฉันส่งอีเมลถึงผู้เขียนข้อความนั้นเพื่อขอข้อมูลเพิ่มเติม / บริบทของเขา


11
ฐานข้อมูลไม่ได้เกี่ยวกับการจัดเก็บข้อมูล แต่การรับข้อมูลตามเกณฑ์ที่กำหนด XML ไม่ได้ปรับขนาด - ลองจัดการไฟล์ XML ขนาด 100 GB ด้วยข้อมูลที่คุณอธิบาย

1
คำถามไม่ชัดเจน คุณถามเกี่ยวกับการจัดเก็บข้อมูลในไฟล์ XML แทนที่จะเป็น DB หรือเก็บข้อมูลไว้ใน DB แต่เป็นประเภท XML muddying ต่อไปคือตัวอย่างของไฟล์ config. net เพราะฉันไม่เห็นว่ามันเป็นที่เก็บข้อมูล
softveda

ยังไม่มีใครบอกว่าไม่มีรูปแบบการจัดเก็บข้อมูลด้วยตัวเองเป็นฐานข้อมูล ฐานข้อมูลรวมถึงรูปแบบการจัดเก็บและกลไกการดึงข้อมูล XML ไม่ใช่กลไกการดึงข้อมูลดังนั้นจึงไม่สามารถเป็นฐานข้อมูลได้ XML นั้นยังเป็นรูปแบบการจัดเก็บที่แย่มากสำหรับข้อมูลที่มากกว่า 1MB
GlenPeterson

คำตอบ:


12

คำพูดนี้ไม่เกี่ยวกับการใช้ XML เป็นรูปแบบการจัดเก็บโดยทั่วไป (ซึ่งมันก็ดีขึ้นอยู่กับความต้องการ) แต่สำหรับการจัดเก็บฐานข้อมูลประเภท

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

อย่างไรก็ตาม XML ไม่ตรงกับข้อกำหนดเหล่านี้จริงๆ เนื่องจากโครงสร้างแท็กที่ซ้อนกันจึงเป็นไปไม่ได้ที่จะกำหนดตำแหน่งที่เก็บค่าที่แน่นอนในไฟล์ (ในรูปแบบของไบต์ออฟเซ็ตลงในไฟล์) โดยไม่ต้องเดินทรีเอกสารทั้งหมด ฐานข้อมูลเชิงสัมพันธ์มีดัชนีและค้นหาค่าในดัชนีแม้จะมีการใช้การค้นหาแบบไบนารีดั้งเดิมเป็นการค้นหา O (log n) เดียวจากนั้นการค้นหาค่าที่แท้จริงคืออะไรนอกจากการค้นหาไฟล์ (เช่นfseek(data_file_handle, row_index * row_size)) ซึ่งก็คือ O (1) ในไฟล์ XML วิธีที่มีประสิทธิภาพมากที่สุดคือการเรียกใช้ตัวแยกวิเคราะห์ SAX บนเอกสารของคุณทำการอ่านและค้นหาจำนวนมากที่น่ากลัวก่อนที่คุณจะได้รับข้อมูลจริงของคุณ คุณสามารถรับสิ่งนี้ได้ดีกว่า O (n) ยกเว้นว่าคุณใช้ดัชนี แต่คุณต้องสร้างดัชนีทั้งหมดใหม่สำหรับการแทรกทุกครั้ง (ดูด้านล่าง)

การแทรกยิ่งแย่ลง ฐานข้อมูลเชิงสัมพันธ์ไม่รับประกันลำดับแถวซึ่งหมายความว่าพวกเขาสามารถเพิ่มแถวใหม่หรือเขียนทับแถวใด ๆ ที่ทำเครื่องหมายว่า 'ลบ' สิ่งนี้เร็วมาก: ฐานข้อมูลสามารถเก็บตำแหน่งที่เขียนได้ไว้รอบ ๆ ได้ รับรายการจากพูลคือ O (1) ยกเว้นว่าพูลว่างเปล่า กรณีที่เลวร้ายที่สุดสระว่ายน้ำว่างเปล่าและจะต้องสร้างหน้าใหม่ แต่นี่ก็เป็น O (1) ในทางตรงกันข้ามฐานข้อมูล XML จะต้องย้ายทุกอย่างหลังจากจุดแทรกเพื่อให้มีพื้นที่ นี่คือ O (n) เมื่อดัชนีเริ่มเข้ามาสิ่งต่าง ๆ น่าสนใจยิ่งขึ้น: ดัชนีฐานข้อมูลเชิงสัมพันธ์ทั่วไปสามารถปรับปรุงได้ด้วยความซับซ้อนที่ค่อนข้างต่ำพูด O (log n) แต่ถ้าคุณต้องการจัดทำดัชนีไฟล์ XML ของคุณการแทรกทุกครั้งอาจเปลี่ยนตำแหน่งบนดิสก์ของทุกค่าในเอกสารดังนั้นคุณต้องสร้างดัชนีทั้งหมดใหม่ นอกจากนี้ยังเป็นการอัปเดตเนื่องจากการอัปเดตพูดเนื้อหาข้อความขององค์ประกอบสามารถเปลี่ยนขนาดได้ซึ่งหมายความว่า XML ที่ต่อเนื่องกันจะต้องเปลี่ยน ฐานข้อมูลเชิงสัมพันธ์ไม่จำเป็นต้องแตะดัชนีเลยหากคุณอัปเดตคอลัมน์ที่ไม่ได้จัดทำดัชนีไว้ ฐานข้อมูล XML จะต้องสร้างดัชนีทั้งหมดใหม่สำหรับการอัปเดตแต่ละครั้งที่เปลี่ยนขนาดของโหนด XML ที่อัปเดต

สิ่งเหล่านี้เป็นข้อเสียที่สำคัญที่สุด แต่ก็ยังมีอีกมาก XML นั้นละเอียดมากซึ่งเหมาะสำหรับการสื่อสารแบบเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์เนื่องจากเพิ่มความปลอดภัย (เซิร์ฟเวอร์ที่รับสามารถทำการตรวจสอบความสมบูรณ์ของ XML ได้ทุกประเภทและหากมีสิ่งใดผิดพลาดในการถ่ายโอนเอกสารไม่น่าจะตรวจสอบได้ ) สำหรับที่เก็บข้อมูลจำนวนมากสิ่งนี้กำลังฆ่า: ไม่ใช่เรื่องแปลกที่จะมีค่าใช้จ่าย 100% หรือมากกว่าสำหรับข้อมูล XML (ไม่ใช่เรื่องแปลกที่จะเห็นอัตราส่วนค่าใช้จ่ายในช่วง 1000% สำหรับสิ่งต่าง ๆ เช่นข้อความ SOAP) ในขณะที่หน่วยเก็บข้อมูลเชิงสัมพันธ์ทั่วไป แบบแผนมีค่าใช้จ่ายคงที่สำหรับข้อมูลเมตาของตารางบวกเล็กน้อยต่อแถว; ค่าใช้จ่ายส่วนใหญ่ในฐานข้อมูลเชิงสัมพันธ์มาจากความกว้างคอลัมน์คงที่ หากคุณมีเทราไบต์ของข้อมูลค่าใช้จ่าย 500% นั้นไม่สามารถยอมรับได้ด้วยเหตุผลหลายประการ


21

XML เป็นหมัดสำหรับการจัดเก็บข้อมูล ครั้งแรกมันเป็น verbose มาก ข้อมูลที่เก็บไว้ในไฟล์ XML จะใช้พื้นที่ดิสก์มากขึ้นจากนั้นข้อมูลเดียวกันจะถูกเก็บไว้ในระบบฐานข้อมูลที่เหมาะสม ในระเบียน XML ชื่อของเขตข้อมูลเฉพาะจะถูกเก็บไว้สองครั้งพร้อมกับการแทนค่าสตริงของข้อมูล ตัวอย่างเช่นหากต้องการเก็บจำนวนเต็มหนึ่งตัวในเขตข้อมูลที่ชื่อว่า "foobar" คุณจะต้องจบลงด้วยสตริง 19 ไบต์:

<foobar>42</foobar>

ในทางกลับกันฐานข้อมูลจริงจะเก็บสิ่งนี้เป็นค่าจำนวนเต็มเดียวโดยใช้ 4 ไบต์ หากฐานข้อมูลของคุณมีขนาดเล็กนั่นก็ไม่ได้มีความหมายอะไรมากนัก แต่ถ้าคุณมี 10,000 ระเบียนนั่นเป็นปัญหา

สองต้องแยกวิเคราะห์ XML จากข้อความทุกครั้งที่อ่านไฟล์ สำหรับฟิลด์ด้านบนฐานข้อมูลจริงเพียงอ่านข้อมูลไบนารีจากหน่วยความจำมันรู้ว่ามันเก็บฟิลด์ "foobar" ในถ้าไฟล์ถูกเก็บเป็น XML ก็ต้องอ่านฟิลด์ "foobar" แยกข้อความนั้น กำหนดว่ามันคืออะไรแล้วแยกสตริง "42" และแปลงเป็นไบนารี 42

ดังนั้นประสิทธิภาพในการใช้ XML จึงสูงมาก ประโยชน์ของ XML คือมันค่อนข้างมนุษย์สามารถอ่านได้และมันช่วยให้การถ่ายโอนข้อมูลระหว่างระบบแยกง่าย ข้อดีเหล่านี้ไม่ได้ใช้กับฐานข้อมูลโลคัล

ข้อยกเว้นเดียวคือไฟล์กำหนดค่าซึ่งโดยทั่วไปแล้วมีขนาดเล็กและโดยทั่วไปจะต้องสามารถแก้ไขได้โดยมนุษย์

ฐานข้อมูล XML จะยิ่งใหญ่และช้ากว่าระบบ SQL ที่สมเหตุสมผล หากคุณไม่สามารถหาข้อได้เปรียบด้านการถ่วงดุลในการอ่านหรือการทำงานร่วมกันของมนุษย์ก็ไม่มีประโยชน์ในการจัดเก็บข้อมูล


1
จุดวิกฤติที่นี่คือขนาดของไฟล์ สำหรับข้อมูลคงที่ที่มีขนาดน้อยกว่าเมกะไบต์ประสิทธิภาพในการโหลด XML หนึ่งครั้งนั้นไม่มาก ฉันทำงานกับแอปพลิเคชันเมื่อประมาณ 5 ปีที่แล้วและพบว่าค่าใช้จ่ายในการโหลดไฟล์ดังกล่าวอยู่ในช่วง 10s ของ ms ฉันกล้าพูดว่าคอมพิวเตอร์เร็วขึ้นเล็กน้อย
dave

@dave: แต่เมื่อคุณอยู่ในพื้นที่ขนาดนั้นรูปแบบ XML จะลดลงอย่างมากในแผนก "แก้ไขได้ด้วยมนุษย์"
Joachim Sauer

เพื่อเน้นปัญหามากยิ่งขึ้นการจัดเก็บค่า "1000000000" จะยังคงเป็น 4 ไบต์ในฐานข้อมูลจริงขณะที่มี 27 ไบต์ใน XML
Daniel B

8

XML สามารถทำงานได้ขึ้นอยู่กับบริบท หากข้อมูลของคุณค่อนข้างคงที่และไม่เปลี่ยนแปลงมากนัก (ตัวอย่างข้อมูลตัวอย่าง) ใช่ XML เป็นการใช้งานที่ดี

การตั้งค่าการกำหนดค่าข้อมูลตัวอย่าง (แม้ว่าจะมีหลายล้านแถว แต่ไม่ค่อยมีการเปลี่ยนแปลง) เป็นประโยชน์อย่างมากของ XML

การอ่าน / เขียนฮาร์ดดิสก์มีราคาแพงกว่าการเข้าถึงข้อมูลจาก Oracle / Sql stack


7

สิ่งนี้ดูเหมือนจะเน้นว่า XML ไม่ควรใช้สำหรับการจัดเก็บข้อมูลและควรใช้สำหรับโปรแกรมเพื่อการทำงานร่วมกันของโปรแกรมเท่านั้น

หลักฐานของคุณมีข้อบกพร่อง

วรรคที่คุณพูดเป็นจริงว่า XML ที่ไม่เปลี่ยนสำหรับฐานข้อมูลไม่ว่ามันไม่ควรนำมาใช้สำหรับการจัดเก็บข้อมูล

เป็นที่ชัดเจนว่าไฟล์การตั้งค่าไม่เหมือนกับฐานข้อมูลและสามารถใช้เทคโนโลยีที่แตกต่างกัน (และควร?)

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


4

นี่เป็นอัตวิสัยจริงๆ คำพูดนั้นก็คือความคิดเห็นของคนบางคน

สุจริตฉันคิดว่า XML เป็นทางเลือกที่ทำงานได้กับฐานข้อมูลเนื่องจากมีข้อได้เปรียบมากกว่า RDMS รวมถึงค่าใช้จ่ายต่ำซึ่งเท่ากับพื้นที่จัดเก็บที่ถูกกว่า (โดยเฉพาะเมื่อใช้บริการโฮสต์ที่คิดค่าบริการแยกต่างหาก)

ลองดูที่dasBlogและBlogEngine แอปพลิเคชั่นทั้งสองนั้นใช้ xml สำหรับการจัดเก็บเป็นค่าเริ่มต้น

ที่กล่าวว่า มันไม่ใช่ RDMS และหากคุณมีความผันผวนสูง (มีการอัพเดทแทรกหรือลบ) ในข้อมูลของคุณหรือต้องการความพร้อมใช้งานสูงให้ใช้ฐานข้อมูล XML นั้นดีสำหรับการจัดเก็บสิ่งเล็ก ๆ เช่นข้อมูลการกำหนดค่าและข้อมูลความผันผวนต่ำ


คำพูดนั้นมาจากหนังสือ ฉันควรเพิ่มใน
Kian

2
"ค่าใช้จ่ายต่ำ?" ฉันคิดว่าคุณหมายถึง "ไม่ต้องติดตั้ง" การเข้าถึงข้อมูลในไฟล์ XML ขนาดใหญ่มีเวลามาก I / O และโอเวอร์เฮดของโปรเซสเซอร์ ใช่ XML นั้นดีสำหรับสิ่งเล็ก ๆ (<1MB) แต่ไม่ใช่ XML นั้นไม่ดีสำหรับข้อมูลที่มีความผันผวนต่ำโดยทั่วไปเพียงเรื่องเล็ก ๆ เท่านั้น
GlenPeterson

Nice Big Lebowski hommage!
InvisiblePanda

1

คำถามของฉันคือนี่ยังเป็นคำสั่งที่ถูกต้องและเป็นที่ยอมรับในการจัดเก็บข้อมูลโดยใช้ XML หรือไม่?

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

ฉันเห็นว่าข้อความที่คุณนำเสนอเป็นสีเทานั้นถูกต้องและถูกต้องหากคุณกำหนดฐานข้อมูลเป็นระบบซอฟต์แวร์

คำจำกัดความของ XML ในXML-Definition ระบุว่า "(XML) เป็นภาษามาร์กอัปที่กำหนดชุดของกฎสำหรับการเข้ารหัสเอกสารในรูปแบบที่ทั้งมนุษย์สามารถอ่านได้และเครื่องอ่านได้"

คำจำกัดความนี้มุ่งเน้นที่ความสามารถในการอ่านและภาษามากกว่าที่จะเป็นกลไกในการจัดการข้อมูล

เปรียบเทียบกับ RDBMS แล้ว XML ไม่มีวิธีการสุ่มแทรกและลบแถวในไฟล์ XML ตัวอย่างเช่นหากคุณมี 1000000 แถวและคุณต้องการลบแถวแบบสุ่มแม้ในไฟล์ที่ใช้ XML สภาพแวดล้อมผู้ใช้เดียวจะไม่เป็นตัวเลือกที่ดีสำหรับฐานข้อมูล นอกจากนี้ XML ไม่มีกลไกดั้งเดิมสำหรับการล็อคข้อมูล ในความเป็นจริงเนื่องจาก XML ไม่ใช่ซอฟต์แวร์คุณสมบัติ ACID (atomicity, ความสอดคล้อง, การแยก, ความทนทาน) ทั้งหมดที่รับประกันว่าธุรกรรมฐานข้อมูลจะถูกประมวลผลอย่างน่าเชื่อถือในสภาพแวดล้อมที่ใช้ร่วมกันถูกปล่อยให้นักพัฒนาสร้าง XML ไม่มีข้อมูลจำเพาะที่แข็งแกร่งเพื่อจัดการกับความสมบูรณ์ของข้อมูลในไฟล์ XML ปล่อยให้เซิร์ฟเวอร์แตกต่างกันเพียงอย่างเดียว (เช่นไฟล์ลูกค้า xml และไฟล์คำสั่ง xml - ไม่มี FKs เพื่อบังคับใช้ความสมบูรณ์)

ดังกล่าวข้างต้นไม่นับของสิ่งที่ขาด XML แทนก็อาจเซิร์ฟเวอร์เป็นเหตุผลอย่างรวดเร็วของคำว่า XML ไม่ได้เป็นฐานข้อมูลซอฟต์แวร์


1

XML ไม่ได้หมายถึงเป็นฐานข้อมูลหรือแทนที่

XML ถูกกำหนดเป็นหลักสำหรับเอกสารเว็บที่allows for the creation of customized tags for individual information fields.อย่างไรก็ตามคุณจะไม่ประสบความสำเร็จในการจัดการข้อมูลแบบรวมศูนย์ด้วย


0

ทำไมคุณต้องการใช้ XML เพื่อจัดเก็บข้อมูลตั้งแต่แรก ฉันหมายความว่ามันเป็นภาษาหลังจากทั้งหมด ...

ในขณะที่บางคนอาจโต้แย้งว่าเป็นรูปแบบที่ยืดหยุ่นและเข้าใจง่ายซึ่งจะมีผลเฉพาะเมื่อคุณต้องแก้ไขด้วยตนเองกับไฟล์ เมื่อคุณโต้ตอบกับฐานข้อมูลด้วยอินเทอร์เฟซทั่วไป (ดึงข้อมูล X ซึ่งตรงตามข้อกำหนด Y และ Z ให้จัดเก็บ / อัปเดตข้อมูล X, ... ) ข้อดีเหล่านั้นจะกลายเป็นโมฆะ


1
ภาษาธรรมชาติถูกใช้เพื่อจัดเก็บข้อมูลมานานหลายศตวรรษ ความเข้าใจยังมีผลบังคับใช้หากแอปพลิเคชันที่อ่านไม่สามารถใช้งานได้ (เช่นแอป 16 บิตที่ไม่เคยอัปเกรด) การจัดเก็บข้อมูลในรูปแบบที่มนุษย์สามารถอ่านได้ทำให้ง่ายต่อการพอร์ต โดยเฉพาะอย่างยิ่งถ้ารูปแบบไม่เคยมีเอกสารดีโดยเฉพาะหรือเอกสารสูญหาย
Paul Butcher

1
การใช้ภาษาธรรมชาติในการจัดเก็บข้อมูลไม่ได้เป็นปัญหา แต่จริง ๆ แล้วการจัดเก็บข้อมูลในรูปแบบที่ให้ความน่ากลัว (เมื่อเทียบกับสิ่งที่มันอาจเป็น) อ่านง่ายประสิทธิภาพของข้อมูลและอัตราส่วนข้อมูลต่อเนื้อหาเป็นสิ่งที่ฉันพูดด้วยตนเอง
zxcdw

0

คำตอบสั้น ๆ : มันขึ้นอยู่กับ

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

นอกจากนี้ฉันคิดว่าการจัดเก็บการตั้งค่าในฐานข้อมูลและไม่อยู่ในไฟล์เช่น app.config ส่วนใหญ่ไม่ได้มีประโยชน์มาก แต่ฉันไม่คิดว่าตัวอย่างนี้พิสูจน์ข้อผิดพลาด


0

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

โดยทั่วไปแล้ว XML ไม่ควรใช้เป็นแหล่งข้อมูลหลักสำหรับแอปพลิเคชันที่ไม่สำคัญ ค่าใช้จ่ายในการทำให้เป็นอนุกรม / deserialization


0

คำฐานข้อมูลสามารถอ้างถึงข้อมูลดิบเท่านั้นหรือระบบการจัดการฐานข้อมูลเช่นกัน คำจำกัดความนี้สร้างความแตกต่างอย่างมากในการโต้แย้งทั้งหมด

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

ในความหมายข้างต้นไม่ XML ไม่ใช่ฐานข้อมูลและคุณไม่ควรลองใช้เป็นหนึ่ง

ถ้าเราใช้คำจำกัดความ "ข้อมูลดิบ" XML จะดีกว่ามาก แต่ก็ยังไม่ค่อยดีเท่าไหร่ ตามที่คนอื่น ๆ ได้ชี้ให้เห็นมันเป็นเรื่องที่ละเอียดมากโดยทั่วไปมักจะไม่มีการเข้ารหัสแบบไบนารีและมีแท็กที่ซ้ำกัน ฯลฯ สิ่งเหล่านี้เป็นการแลกเปลี่ยนเพื่อให้ XML สามารถอ่านได้โดยมนุษย์ประสิทธิภาพการทำงานเป็นศัตรูของข้อกำหนดนี้ . XML นั้นไม่เหมาะอย่างยิ่งสำหรับสถานการณ์ที่ง่ายที่สุดที่คุณกำลังแทรกระเบียนอย่างต่อเนื่อง สมมติว่าคุณต้องการให้ไฟล์ XML ของคุณถูกต้องคุณต้องมีแท็กปิดหนึ่งแท็กซึ่งหมายความว่าการผนวกเร็กคอร์ดหมายความว่าคุณต้องเลื่อนแท็กขึ้นมาในตอนท้าย นี่ค่อนข้างแพง (เราจะรู้ได้อย่างไรว่าแท็กนั้นเริ่มต้นที่ตรงไหนถ้ามี "ตาราง" หลายอันเราแค่ย้ายไฟล์ทั้งหมดขึ้นมา?) และถ้าคุณต้องการหลีกเลี่ยงคุณ

มีสถานการณ์ที่เหมาะสมกับ XML - ไฟล์กำหนดค่าเป็นตัวอย่างที่ดีเพราะโดยทั่วไปแล้วมีขนาดเล็กและความสามารถในการอ่านของมนุษย์เป็นคุณสมบัติที่ยอดเยี่ยม การมีฐานข้อมูลสำหรับไฟล์ปรับแต่งอาจเกินความจำเป็น

ในทางกลับกันฐานข้อมูลนั้นยอดเยี่ยมเมื่อคุณมีหลายพัน (หรือหลายล้าน / หลายพันล้านรายการ) และมีผู้ใช้หลายคนในการอัพเดทพร้อมกัน ดังนั้นใช่ XML ไม่ใช่ฐานข้อมูลและคุณไม่ควรใช้มันอย่างใดอย่างหนึ่ง ตัวอย่างของคุณเกิดขึ้นเป็นหนึ่งในสถานการณ์เหล่านั้นที่คุณไม่ต้องการ DB ในตอนแรกและ XML นั้นเหมาะสมกว่า

วิธีที่ฉันเห็นมันเป็นแบบนี้: ถ้าคุณใช้ XML เป็น DB (พูดเป็นร้านค้าสนับสนุนสำหรับระบบการทำธุรกรรม) คุณจะจบลงด้วยการปฏิรูปและการเขียนใหม่ RDBMS นั่นเป็นวิธีที่แย่มากในการใช้เวลาและพลังงานของคุณ ฉันคิดว่านี่เป็นสิ่งที่คำพูดพูดเช่นกัน


0

ฉันยอมรับว่าไม่ใช่ฐานข้อมูลเชิงสัมพันธ์ ฉันคิดว่าผู้เขียนพูดในเครื่องหมายคำพูดไม่ให้ใช้เป็นคำพูดเดียว

ต้องบอกว่าถึงแม้ว่าคุณอาจจะหรืออาจไม่ต้องการก็ตาม หากคุณไม่จำเป็นต้องทำการสืบค้นข้อมูลมากนักและตั้งใจที่จะเก็บไว้แล้วดึงข้อมูลในภายหลังตามเกณฑ์การสืบค้นที่ จำกัด คุณจำเป็นต้องมีที่จัดเก็บและเรียกค้นเอกสาร XML - ไม่ใช่ฐานข้อมูลเชิงสัมพันธ์

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

คุณสามารถใช้เครื่องมือ ORM เช่น Hibernate และเครื่องมือเช่น Apache Axis เพื่อสร้างรหัสทั้งหมดที่คุณต้องการในการสร้างบริการที่จัดการ CRU อย่างง่าย คุณจะต้องห่อหุ้มด้วยการรับรองความถูกต้องของหลักสูตรและอาจต้องแยกข้อมูลตามผู้ใช้ระดับการเข้าถึง ฯลฯ คุณอาจต้องการ จำกัด การดำเนินการที่ผู้ใช้ที่ได้รับอนุญาตสามารถทำได้ผ่านบริการ SOAP สำหรับ ตัวอย่าง.

ในแง่นี้คุณทำเหมือนการจัดการเนื้อหามากกว่าสิ่งอื่นใด

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