การใช้ฐานข้อมูล NoSQL ในศาสตร์ข้อมูล


16

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


2
การใช้งานที่สำคัญคือการจัดเก็บข้อมูลและการดึงข้อมูล อันที่จริงแล้วมันเกี่ยวกับการใช้งานเฉพาะสำหรับฐานข้อมูล NOSQL หรือฐานข้อมูลใด ๆ ต้องการทำให้คำถามของคุณดีขึ้นหรือไม่
Spacedman

ใช่ฐานข้อมูลส่วนใหญ่จะใช้สำหรับการจัดเก็บและดึงข้อมูล พวกเขาจะใช้สำหรับการวิเคราะห์ข้อมูลได้อย่างไร? เครื่องมืออะไรที่สร้างไว้ในฐานข้อมูล NOSQL เช่น mongodb ซึ่งทำให้การวิเคราะห์ข้อมูลง่ายและมีประสิทธิภาพ
jithinjustin

1
ปรับปรุงคำถามของคุณโดยแก้ไขคำถามไม่ใช่เพิ่มความคิดเห็น
Spacedman

คำตอบ:


23

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

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

  • ไม่มีสคีมา - หากคุณกำลังทำงานกับข้อมูลที่ไม่มีโครงสร้างจำนวนมากอาจเป็นการยากที่จะตัดสินใจและใช้สคีมาอย่างเข้มงวด โดยทั่วไปฐานข้อมูล NoSQL นั้นให้การสนับสนุนเป็นอย่างดีและจะช่วยให้คุณสามารถแทรกเอกสารที่ไม่มี schema ได้อย่างรวดเร็วซึ่งไม่ใช่สิ่งที่ฐานข้อมูล SQL จะสนับสนุน
  • JSON - หากคุณบังเอิญทำงานกับเอกสารสไตล์ JSON แทนที่จะใช้ไฟล์ CSVคุณจะเห็นประโยชน์มากมายในการใช้บางอย่างเช่น MongoDB สำหรับฐานข้อมูลเลเยอร์ โดยทั่วไปการประหยัดเวิร์กโฟลว์ไม่ได้มีค่ามากกว่าเวลาที่เพิ่มขึ้นของแบบสอบถาม
  • ใช้งานง่าย - ฉันไม่ได้บอกว่าฐานข้อมูล SQL มักจะใช้งานยากหรือCassandraเป็นสิ่งที่ง่ายที่สุดในโลกในการตั้งค่า แต่โดยทั่วไปแล้วฐานข้อมูล NoSQL นั้นติดตั้งและใช้งานได้ง่ายกว่าฐานข้อมูล SQL MongoDB เป็นตัวอย่างที่ดีโดยเฉพาะอย่างยิ่งเรื่องนี้เป็นที่รู้จักกันว่าเป็นหนึ่งในเลเยอร์ฐานข้อมูลที่ง่ายที่สุดที่จะใช้ (นอกSQLite ) SQL ยังเกี่ยวข้องกับการทำให้เป็นมาตรฐานจำนวนมากและมีแนวปฏิบัติที่ดีที่สุดของ SQL ที่สืบทอดกันมาโดยทั่วไป

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


คุณพูดถูก ฐานข้อมูล NOSQL ส่วนใหญ่จะใช้สำหรับการจัดเก็บข้อมูลที่ไม่มีโครงสร้างหรือกึ่งโครงสร้างเช่น json คุณช่วยอธิบายการวิเคราะห์ข้อมูลบางประเภทที่เราสามารถทำได้ เครื่องมืออะไรที่สร้างไว้ใน MongoDB ที่สามารถใช้ในการวิเคราะห์ข้อมูลได้?
jithinjustin

1
@ jithinjustin ไม่มีเครื่องมือวิเคราะห์ข้อมูลที่สร้างไว้ใน Mongo หรือฐานข้อมูลใด ๆ ยังjsonเป็นข้อมูลที่มีโครงสร้างทั้งหมด ในทางเทคนิคคุณสามารถทำการวิเคราะห์ข้อมูลประเภทใดก็ได้โดยใช้ฐานข้อมูล NOSQL นั้นไม่เกี่ยวข้องกัน มีเครื่องมือสร้างมาจากด้านบนของ mongo เช่น analytica
indico

1
ฉันไม่รู้เกี่ยวกับสิ่งนั้นทั้งหมด MongoDB สามารถทำงานได้ดีกว่า MySQL คุณน่าจะมีข้อโต้แย้งที่ดีกว่าถ้าคุณพูดว่า PostgreSQL (ซึ่งวิธีนี้สามารถยอมรับ JSON ได้) ไม่ว่าจะด้วยวิธีใดฉันจะไม่พิจารณา "ประสิทธิภาพ" โดยพลการ (เราไม่ทราบว่ากรณีการใช้งาน) คือเหตุผลใดที่จะไม่ใช้ NoSQL ยังไม่ลดราคาโดยใช้ฐานข้อมูลหลาย ๆ โปรดจำไว้ว่า MongoDB มีคุณสมบัติการรวมที่น่าทึ่งที่ SQL ไม่มี
Tom

1
@Tom เกี่ยวกับประสิทธิภาพคุณจะพบว่างานเดียวที่ mongo ทำได้ดีกว่า mysql บนคือการแทรก ( moredevs.ro/mysql-vs-mongodb-performance-benchmark ) ซึ่งเป็นการวิเคราะห์ข้อมูลขนาดเล็ก คุณลักษณะการรวมของ SQL นั้นมีความเป็นผู้ใหญ่มากกว่า Mongo เท่าที่ MySQL และ Postgres ตัวเลขนั้นเบ้อย่างชั่วขณะและทั้งสองมีแนวโน้มที่จะให้ประสิทธิภาพที่คล้ายคลึงกัน MySQL เป็นเรื่องธรรมดามากขึ้นซึ่งเป็นเหตุผลที่ฉันพูดถึงสิ่งนั้นแทน แต่ทั้งสองนั้นค่อนข้างคล้ายกัน
indico

I've always seen better performance on MongoDB when things fit into memory. I take benchmarks with a gain of salt because if you Google a bit you're gonna find a bunch of benchmarks showing MongoDB as faster. It truly depends on your needs. That said, to help answer the original question - I think there's plenty of uses for NoSQL in big data science and analytics.
Tom


4

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

นี่คือสิ่งหนึ่งที่คุณไม่สามารถทำได้ในฐานข้อมูล SQL: คำนวณความเชื่อมั่น http://www.slideshare.net/shift8/mongodb-machine-learning

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

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

ฐานข้อมูล MongoDB (และ NoSQL อื่น ๆ ) มีคุณสมบัติที่ทรงพลังมากเช่นแผนที่ในตัว / ลดลง ซึ่งอาจส่งผลให้ประหยัดทั้งต้นทุนและเวลาในการใช้บางอย่างเช่น Hadoop หรืออาจให้ต้นแบบหรือ MVP เพื่อเปิดธุรกิจขนาดใหญ่

แล้วฐานข้อมูลกราฟล่ะ? พวกมันคือ "NoSQL" ด้วย ดูฐานข้อมูลเช่น OrientDB ถ้าคุณต้องการโต้แย้งประสิทธิภาพ ... ฉันไม่คิดว่าคุณจะแสดงฐานข้อมูล SQL ที่เร็วกว่า =) ... และฐานข้อมูลกราฟมีแอปพลิเคชั่นที่น่าทึ่งจริง ๆ ตามที่คุณต้องทำ

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


1
ฉันไม่เห็นอะไรเลยในลิงค์นี้หรือที่นี่ซึ่งพิสูจน์ว่าคุณไม่สามารถวิเคราะห์ความเชื่อมั่นในฐานข้อมูล SQL ได้ ตัวอย่าง mongoDB ได้รับประโยชน์จาก Javascript ในฐานข้อมูลดังนั้นคุณสามารถใช้ภาษาที่ฝังในฐานข้อมูล SQL ได้ ตัวอย่างเช่น Postgres + R.
Spacedman

ชอบที่จะเห็นว่าคุณสามารถใช้รหัสและแผนที่ / ลดในฐานข้อมูลเหล่านั้นได้ที่ไหน ในทุกระดับ (โดยเฉพาะ Postgres) ... และแม้ว่าคุณจะทำได้ แต่ก็ยังไม่ได้คำตอบที่ถูกต้องตามวิธี เพียงแค่อาจต้องการใช้ NoSQL มันใช้งานได้ดี
Tom

1
Postgres + C, Python, Perl, R, ป้อน Postgres DB ของคุณลงในอัลกอริทึมการเรียนรู้ของเครื่องล่าสุด ง่าย: postgresql.org/docs/9.0/static/xplang.html
Spacedman

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