เหตุผลที่ดีที่ไม่ใช้ฐานข้อมูลเชิงสัมพันธ์?


139

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

คำตอบ:


148

ไฟล์ข้อความธรรมดาในระบบไฟล์

  • ง่ายมากในการสร้างและแก้ไข
  • ง่ายสำหรับผู้ใช้ที่จะจัดการด้วยเครื่องมือง่ายๆ (เช่นโปรแกรมแก้ไขข้อความ grep และอื่น ๆ )
  • การจัดเก็บที่มีประสิทธิภาพของเอกสารไบนารี

ไฟล์ XML หรือ JSON บนดิสก์

  • ข้างต้น แต่มีความสามารถอีกเล็กน้อยในการตรวจสอบโครงสร้าง

ไฟล์สเปรดชีต / CSV

  • รูปแบบที่ง่ายมากสำหรับผู้ใช้ทางธุรกิจที่จะเข้าใจ

การโค่นล้ม (หรือระบบการควบคุมเวอร์ชันของดิสก์ที่คล้ายกัน)

  • การสนับสนุนที่ดีมากสำหรับการกำหนดเวอร์ชันของข้อมูล

Berkeley DB (โดยทั่วไปเป็น hashtable ที่ใช้ดิสก์)

  • แนวคิดง่ายมาก (เพียงคีย์ / ค่าที่ไม่ได้พิมพ์)
  • ค่อนข้างเร็ว
  • ไม่มีค่าใช้จ่ายในการบริหาร
  • รองรับธุรกรรมที่ฉันเชื่อ

ฐานข้อมูลที่ง่ายของ Amazon

  • ฉันเชื่อเหมือน Berkeley DB แต่เป็นเจ้าภาพ

App Engine Datastore ของ Google

  • โฮสต์และปรับขนาดได้อย่างมาก
  • การจัดเก็บคีย์ - ค่าเอกสาร (เช่นตัวแบบข้อมูลยืดหยุ่น)

CouchDB

  • โฟกัสเอกสาร
  • จัดเก็บง่ายของข้อมูลตามกึ่งโครงสร้าง / เอกสาร

คอลเลกชันภาษาดั้งเดิม (เก็บไว้ในหน่วยความจำหรือต่อเนื่องบนดิสก์)

  • การรวมภาษาที่แน่นมาก

เอ็นจินการจัดเก็บแบบกำหนดเอง (เขียนด้วยมือ)

  • อาจมีประสิทธิภาพสูงมากในการใช้เคสที่จำเป็น

ฉันไม่สามารถรับรู้อะไรเกี่ยวกับพวกเขาได้มากมาย แต่คุณอาจต้องการตรวจสอบระบบฐานข้อมูลเชิงวัตถุด้วย


10
มันจะดีมากถ้าคุณอธิบายข้อเสียของตัวเลือกแต่ละตัวไม่เช่นนั้นจะเลือกได้อย่างไร? ขอบคุณ
Sklivvz

4
การเขียนหลายล้านแถวลงในฐานข้อมูลอาจใช้เวลาหนึ่งวันในขณะที่เพิ่มหนึ่งล้านบรรทัดในการบันทึกไฟล์นั้นใช้เวลาเพียงไม่กี่นาที ฉันจะไม่เข้าใจว่าทำไมคนยืนยันในการวางข้อมูลบันทึกลงในฐานข้อมูล
Aaron Digulla

33
แอรอน: ฉันมีเหตุผลหนึ่งข้อ: เลือกข้อความจากบันทึกที่ไหน (วันที่ระหว่าง 2009-01-01 และ 2009-03-01) และพิมพ์ = 'ข้อผิดพลาด' และระบบ = 'windows' :) คุณจะโหลดไฟล์จากไฟล์ข้อความอย่างไร ?
Tomáš Fejfar

1
ฉันชอบไฟล์ข้อความทุกครั้งที่ทำได้ คุณไม่สามารถใช้งานได้ตลอดเวลา แต่เมื่อคุณสามารถวินิจฉัยปัญหาได้ง่ายขึ้น
Loren Pechtel

berkeley db มีธุรกรรมอย่างแน่นอน ไฟล์ข้อความและไฟล์ xml / json ทำไม่ได้ดังนั้นแอพแบบมัลติเธรดสามารถกระทืบมันได้หากคุณไม่ระวัง ไฟล์ CSV นั้นยอดเยี่ยมสำหรับคอลเลกชันของพารามิเตอร์เพราะผู้ใช้ทางธุรกิจสามารถดูและแก้ไขได้โดยไม่ต้องใช้เครื่องมือเพิ่มเติม ไฟล์ข้อความที่ยอดเยี่ยมสำหรับแอปพลิเคชั่นแบบเขียนครั้งเดียว / อ่านแทบไม่เคยเลย ในการเลือกวิธีการที่คุณจำเป็นต้องรู้ว่าคุณกำลังพยายามทำอะไรให้สำเร็จ
โอ. โจนส์

26

คำตอบของ Matt Sheppard นั้นยอดเยี่ยม (mod up) แต่ฉันจะคำนึงถึงปัจจัยเหล่านี้เมื่อคิดถึงแกนหมุน:

  1. โครงสร้าง: เห็นได้ชัดว่ามันแตกเป็นชิ้น ๆ หรือคุณกำลังทำการแลกเปลี่ยนหรือไม่?
  2. การใช้งาน: จะวิเคราะห์ / ดึงข้อมูล / grokked ได้อย่างไร?
  3. อายุการใช้งาน: ข้อมูลมีประโยชน์นานเท่าใด
  4. ขนาด: มีข้อมูลเท่าใด

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

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

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

หมายเหตุฉันคุ้นเคยกับการคิดขนาดใหญ่ขึ้น


5
อันตรายอย่างหนึ่งของไฟล์ CSV คือการหลบหนีจำเป็นต้องทำอย่างถูกต้อง มัน 'ง่ายต่อการใช้ตัวอ่าน CSV หรือนักเขียนที่ไม่ได้ทำตามข้อกำหนดเพราะมันดูเรียบง่ายและมีรายละเอียดปลีกย่อย: en.wikipedia.org/wiki/Comma-separated_values#Specification
Jared Updike

10

ระบบไฟล์ของ prety นั้นมีประโยชน์สำหรับการจัดเก็บข้อมูลไบนารีซึ่งไม่สามารถทำงานได้ดีในฐานข้อมูลเชิงสัมพันธ์



6

หากคุณไม่ต้องการกรดคุณอาจไม่จำเป็นต้องมีค่าใช้จ่ายของ RDBMS ดังนั้นตรวจสอบว่าคุณต้องการที่แรก คำตอบที่ไม่ใช่ RDBMS ส่วนใหญ่ที่ให้ไว้ที่นี่ไม่ได้จัดเตรียมกรด


1
คุณสามารถยกตัวอย่างทำไม / เมื่อไม่จำเป็นต้องใช้กรด?
Ivan Voroshilin

1
@vibneiro หากฐานข้อมูลมีผู้ใช้เพียงรายเดียวเท่านั้นที่ดำเนินการตามลำดับหรือความเสี่ยงของความไม่สอดคล้องของฐานข้อมูลในกรณีที่ไฟฟ้าขัดข้องเป็นที่ยอมรับหรือแนวคิดของการทำธุรกรรมฐานข้อมูลไม่สามารถนำมาใช้ได้หรือไม่จำเป็นต้องมีข้อ จำกัด เรียงซ้อนทริกเกอร์หรือสิ่งที่คล้ายกันจากนั้นผู้ให้บริการที่ไม่ใช่ACID non-RDBMS (ตัวอย่างเช่นไฟล์ข้อความที่มี API คล้าย RDBMS) อาจพอเพียง ตัวอย่างเช่นแอปพลิเคชันของคุณอาจเก็บฐานข้อมูลของข้อความการวินิจฉัยที่ผ่านมาซึ่ง ACID นั้นไม่เกี่ยวข้องอย่างสมบูรณ์และ "log.txt" จะพอเพียง
bzlm

ปรากฎว่าไม่จำเป็นต้องใช้กรดในกรณีที่หายากมาก ฉันสงสัยว่าทำไมฐานข้อมูล NoSQL จึงได้รับความนิยม ส่วนใหญ่ไม่รองรับกรดเต็ม
Ivan Voroshilin

@vibneiro, NoSQL มักจะง่ายขึ้น, มีน้ำหนักเบา, ฝังตัวได้มากขึ้น, เป็นโฮสต์ในตัวเองได้ง่ายขึ้นยืดหยุ่นได้มากขึ้นและมักใช้กับกรดบางชนิด หากคุณไม่มีข้อมูลเชิงสัมพันธ์ RDBMS อาจไม่ใช่สิ่งที่คุณต้องการ
bzlm

6

เอ็นจินการจัดเก็บแบบกำหนดเอง (เขียนด้วยมือ) / อาจมีประสิทธิภาพสูงมากในกรณีที่จำเป็นต้องใช้

http://www.hdfgroup.org/

หากคุณมีชุดข้อมูลขนาดใหญ่แทนที่จะใช้ชุดของคุณเองคุณอาจใช้ HDF รูปแบบข้อมูลลำดับชั้น

http://en.wikipedia.org/wiki/Hierarchical_Data_Format :

HDF รองรับหลายรุ่นข้อมูลที่แตกต่างกันรวมถึงอาร์เรย์หลายมิติภาพแรสเตอร์และตาราง

นอกจากนี้ยังมีลำดับชั้นเช่นระบบไฟล์ แต่ข้อมูลจะถูกเก็บไว้ในไฟล์ไบนารีมายากล

HDF5 เป็นชุดที่ทำให้สามารถจัดการชุดข้อมูลขนาดใหญ่และซับซ้อนได้

คิดถึง petabytes ของ NASA / JPL data sensing remote


4

G'day,

กรณีหนึ่งที่ฉันนึกได้คือเมื่อข้อมูลที่คุณกำลังสร้างแบบจำลองไม่สามารถแสดงได้อย่างง่ายดายในฐานข้อมูลเชิงสัมพันธ์

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

ฉันเกือบทั้งหมดของกรณีเหล่านี้มีการใช้OO DBไม่ว่าจะเป็นผลิตภัณฑ์เชิงพาณิชย์หรือระบบที่ม้วนตัวเองซึ่งช่วยให้สามารถสืบทอดวัตถุได้

ฉันทำงานกับแอปพลิเคชั่นตรวจสอบ 3G สำหรับ บริษัท ขนาดใหญ่ที่จะยังคงไม่ระบุชื่อ แต่มีโลโก้เป็นคราบไวน์แดง (-: และพวกเขาใช้ OO DB เช่นนี้เพื่อติดตามคุณลักษณะต่าง ๆ ทั้งหมดสำหรับเซลล์แต่ละเซลล์ภายใน เครือข่าย

การซักถามของฐานข้อมูลดังกล่าวกระทำโดยใช้เทคนิคที่เป็นกรรมสิทธิ์ซึ่งปกติแล้วจะปราศจาก SQL

HTH

เสียงเชียร์

ปล้น


4
ทำไมข้อมูลที่เป็นฐานถึงไม่ดีพอสำหรับโมเดลเชิงสัมพันธ์?
kaybenleroll

3

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


3

ในบางกรณี (ตัวอย่างเช่นข้อมูลตลาดการเงินและการควบคุมกระบวนการ) คุณอาจจำเป็นต้องใช้ฐานข้อมูลแบบเรียลไทม์มากกว่า RDBMS ดูลิงค์วิกิ


3

มีเครื่องมือ RAD ชื่อJADEเขียนเมื่อสองสามปีก่อนที่มี OODBMS ในตัว แปลงก่อนหน้าของเครื่องยนต์ DB ยังรองรับ Digitalk Smalltalk หากคุณต้องการตัวอย่างการสร้างแอปพลิเคชันโดยใช้กระบวนทัศน์ที่ไม่ใช่ RDBMS นี่อาจเป็นการเริ่มต้น

ผลิตภัณฑ์ OODBMS อื่น ๆ ได้แก่Objectivity , GemStone (คุณจะต้องใช้VisualWorks Smalltalk ในการรันเวอร์ชัน Smalltalk แต่ยังมีรุ่น java ด้วย) นอกจากนี้ยังมีโครงการวิจัยโอเพนซอร์ซในพื้นที่นี้ - EXODUS และ SHORE สืบเชื้อสายมาจากใจ

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

OODBMS เหมาะที่สุดสำหรับการใช้งานที่มีโครงสร้างข้อมูลหลักที่แสดงได้ดีที่สุดเป็นกราฟของโหนดที่เชื่อมต่อถึงกัน ฉันเคยบอกว่าแอพพลิเคชั่น OODBMS ที่เป็นแก่นสารคือ Multi-User Dungeon (MUD) ที่ห้องจะมีอวตารของผู้เล่นและวัตถุอื่น ๆ


2
มันเคยเป็นจริงที่คุณต้องการลูกค้า Smalltalk เพื่อใช้ GemStone / S (สำหรับแอปบนเดสก์ท็อป) แต่ด้วยเว็บเฟรมเวิร์ก Aida ( aidaweb.si ) และ Seaside ( seaside.st ) GemStone / S สามารถใช้โดยตรงเป็นแอปพลิเคชัน เซิร์ฟเวอร์ ดูข้อมูลเกี่ยวกับ GLASS ( seaside.gemstone.com )
Dale Henrichs

อีกเหตุผลหนึ่งก็คือถ้าคุณใส่ใจคุณภาพของข้อมูล ใน OODB เช่น Gemstone จะง่ายกว่ามากในการบังคับใช้กฎความถูกต้องที่ซับซ้อน
Stephan Eggermont

ความสามารถในการสืบค้นเฉพาะกิจของ OODBMS นั้นดีกว่าของ RDBMS-es ที่ใช้ SQL เป็นอย่างมาก
Stephan Eggermont

1

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

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

บริการเช่นAmazon S3มีรูปแบบการจัดเก็บข้อมูลที่ง่ายขึ้น (คีย์ -> ค่า) ที่ไม่รองรับ SQL ความยืดหยุ่นเป็นกุญแจสำคัญ

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


1

มีหลายวิธีในการจัดเก็บข้อมูล - แม้ "relational databse" ครอบคลุมช่วงของทางเลือกจากไลบรารีของรหัสอย่างง่ายที่จัดการไฟล์ภายในเครื่อง (หรือไฟล์) ราวกับว่ามันเป็นฐานข้อมูลเชิงสัมพันธ์บนพื้นฐานผู้ใช้คนเดียวผ่าน ระบบที่ใช้ไฟล์มากกว่าที่สามารถจัดการผู้ใช้หลายคนเพื่อเลือกระบบที่ใช้ "เซิร์ฟเวอร์" ที่ร้ายแรง

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

สำหรับเรานั่นคือเรากำลังจะใช้สิ่งที่จะทำ SQL (MS เสนอชุดเครื่องมือที่เรียกใช้จาก. DLL เพื่อทำสิ่งที่ผู้ใช้คนเดียวตลอดจนถึงเซิร์ฟเวอร์องค์กรและพวกเขาพูด SQL เดียวกัน (ด้วยข้อ จำกัด ที่ส่วนล่างสุด)) หรือเราจะใช้ XML เป็นรูปแบบเพราะ (สำหรับเรา) การใช้คำฟุ่มเฟือยนั้นไม่ค่อยมีปัญหา

ขณะนี้เราไม่จำเป็นต้องจัดการข้อมูลไบนารีในแอปของเราเพื่อไม่ให้เกิดคำถามขึ้น

Murph


1

หนึ่งอาจต้องการพิจารณาการใช้เซิร์ฟเวอร์ LDAP แทนฐานข้อมูล SQL แบบดั้งเดิมหากข้อมูลแอปพลิเคชันมีการเน้นคีย์ / ค่าอย่างมากและเป็นลำดับชั้นในลักษณะ


1

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

ตรงไปตรงมาถ้าฉันต้องการระบบที่มีผู้ใช้หลายคนฉันจะต้องมีการโน้มน้าวใจอย่างมากว่าจะไม่ใช้ฐานข้อมูลเชิงสัมพันธ์ของเซิร์ฟเวอร์ที่เหมาะสม


BTrees เป็นการใช้งานพื้นฐานของดัชนีปกติ ออราเคิลสนับสนุนตารางที่จัดทำดัชนีซึ่งเป็นเพียงตารางที่นำมาใช้เช่นเดียวกับดัชนี พวกมันอ่านได้เร็วขึ้นช้ากว่าในการเขียนและใช้ B-tree ดู: < oracle.com/technology/products/oracle9i/datatab//iots/
......

1

ฐานข้อมูลข้อความแบบเต็มซึ่งสามารถสอบถามกับตัวดำเนินการใกล้เคียงเช่น "ภายใน 10 คำ" เป็นต้น

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

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


1

นอกจากนี้: * สถานการณ์ในตัว - โดยปกติจะต้องใช้บางสิ่งบางอย่างที่เล็กกว่านี้และใช้ RDBMS แบบเต็ม Db4oเป็น ODB ที่สามารถใช้งานได้ง่ายในกรณีดังกล่าว * การพัฒนาอย่างรวดเร็วหรือพิสูจน์แนวคิด - ที่คุณต้องการมุ่งเน้นไปที่ธุรกิจและไม่ต้องกังวลกับชั้นความเพียร



1

KISS: ทำให้มันเล็กและเรียบง่าย


1
นั่นเป็นรุ่นที่สุภาพ ... ฉันได้ยินบ่อยขึ้นว่า "ทำให้มันง่ายโง่" ... หรืออึกบางทีนั่นอาจเป็นสิ่งที่ผู้คนบอกฉัน! :-(
GreenMatt

1

ฉันจะเสนอ RDBMS :) หากคุณไม่เคยมีปัญหากับการตั้งค่า / การจัดการไปสำหรับ SQLite สร้างขึ้นใน RDBMS พร้อมรองรับ SQL อย่างเต็มรูปแบบ มันยังช่วยให้คุณสามารถเก็บข้อมูลประเภทใดก็ได้ในคอลัมน์ใดก็ได้

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

เกี่ยวกับการค้นหาข้อความแบบเต็ม: SQLite มีโมดูลสำหรับการค้นหาข้อความแบบเต็มเช่นกัน

เพียงแค่สนุกกับอินเทอร์เฟซมาตรฐานกับข้อมูลของคุณ :)


0

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

Hadoop นอกจากนี้ยังมีการดำเนินการของไฟล์ระบบของ Googleที่เรียกว่าHadoop Distributed ระบบไฟล์


0

ฉันขอแนะนำ Lua เป็นทางเลือกแทนการจัดเก็บข้อมูลแบบ SQLite

เพราะ:

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

นี่คือตัวเลือก "ชุดภาษาดั้งเดิม" ของคำตอบที่ยอมรับ หากคุณใช้ C / C ++ เป็นระดับแอปพลิเคชั่นมันมีความเหมาะสมอย่างยิ่งที่จะโยน Lua engine (ไบนารีขนาด 100kB) เพื่อการอ่าน configs / data หรือเขียนมันออกมา


Lua เป็นภาษาโปรแกรม คำแนะนำนี้อาจเป็นแบบทั่วไปเพื่อแนะนำคุณสมบัติการคงอยู่ / ลำดับของภาษาการเขียนโปรแกรมใด ๆ (เช่นดอง / ดองใน Python หรือ JSON / YAML สำหรับ Perl et al และอื่น ๆ ) สิ่งนี้ไม่ได้ระบุการเข้าถึงพร้อมกันและการรับประกัน ACID เลย
จิมเดนนิส

คุณถูก. สิ่งที่หายไปจากรายการของฉันคือลักษณะการใช้งานแบบอ่านอย่างเดียวโดยนัย ในสถานการณ์เช่นนี้ฉันถือเป็นข้อความของฉัน สำหรับการอ่าน - เขียนการใช้ Lua ด้วยวิธีนี้ไม่สมเหตุสมผลเลย มีหลายสิ่งหลายอย่างเมตาดาต้าระบบไฟล์ sa ส่วนใหญ่เป็นแบบอ่านอย่างเดียวดังนั้นวิธีการดังกล่าวจึงไม่ได้หมายถึงความต้องการ ro ที่สมบูรณ์
akauppi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.