RavenDB הוא בסיס נתונים מבוזר המושתת על מודל המסמכים (Document Model) ותומך במאפייני ACID במלואם. RavenDB מפותח על ידי Hibernating Rhinos Ltd.[1][2][3][4][5][6] היא תוכנת קוד-פתוח הכתובה בשפת C# ונתמכת על ידי מערכות הפעלה מרובות, לרבות Windows, Linux ו-MacOS[1]. ניתן לפרושֹ שרתי RavenDB באשכולות מבוזרים (Distributed Clusters), בשכפול מולטי-מאסטר (Multi-Master Replication).

RavenDB
מפתח Hibernating Rhinos
תאריך השקה 2010 עריכת הנתון בוויקינתונים
גרסה אחרונה 5.0.4 (10 בנובמבר 2020) עריכת הנתון בוויקינתונים
נכתבה בשפות C#
סוג רישיון AGPL גרסה 3
קוד מקור https://github.com/ravendb/ravendb עריכת הנתון בוויקינתונים
www.ravendb.net
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית OOjs UI icon info big.svg

היסטוריהעריכה

פיתוח בסיס הנתונים "RavenDB", (או "Rhino DivanDB" בשמו המקורי)[1][7], החל בשנת 2008 על ידי אורן עיני (Ayende Rahien[8]) ונמשך על ידי חברת Hibernating Rhinos Ltd.[4].

לדברי החברה היה RavenDB בסיס הנתונים מושתת מודל-המסמכים הראשון שפעל על-גבי NET framework[1][2] . הוא גם מראשוני בסיסי הנתונים מסוגו שסיפקו תמיכה מלאה בכל מאפייני ACID[3][9].

בשנת 2019 החלה חברת Hibernating Rhinos לספק את RavenDB גם כשירות ענן בשם RavenDB Cloud.[10][11][12]

גרסאותעריכה

גרסה תאריך תכונות שנוספו (רשימה חלקית)
1.0 מאי 2010[13]
2.0 ינואר 2013[14] שכפול Replication[15][16]
2.5 יוני 2013[17] הטלות, שאילתות פאות Projections; facet querying[15]
3.0 נובמבר 2014[18] מנוע אחסון חדש "Voron"; ממשק תכנות יישומים ב-Java API; Voron storage engine[19][20]
3.5 אוקטובר 2016[21] אשכולות מבוזרים Clustering[21]
4.0 פברואר 2018[22] נהיה חוצה-פלטפורמות; זמין עם רישיון חופשי[23]
4.1 אוגוסט 2018[24] תנועות מבוזרות Cluster-wide transactions[10][24]
4.2 2019[25] שאילתות גרף Graph querying[10]
5.0 סדרות זמן (time-series)

ארכיטקטורת המערכתעריכה

הנתונים נשמרים על ידי RavenDB במסמכים חסרי-סכימה (Schemaless) בפורמט JSON.[1][7][2][15][16][6] ברמת האחסון, המסמכים נכתבים בפורמט בינארי בשם "Blittable",[26]. המסמכים מקובצים באוספים (Collections) - כל מסמך שייך לאוסף אחד בלבד.[15][16] ניתן לפרושֹ מערכות RavenDB באשכול מבוזר של שרתים (הקרויים "צמתים", "nodes"), באמצעות שכפול מולטי-מאסטר (multi-master replication[1][3]). לשם ביצוע פעולות מסוימות ברמת האשכול, נדרשת הסכמת רוב הצמתים; כדי להשיג את ההסכמה, משתמשים הצמתים באלגוריתם Raft (Raft Consensus Algorithm).[1] משימות בסיס הנתונים מחולקות בין הצמתים באופן מאוזן, כדי להקל על העומס המוטל על כל אחד מהם.[1] בתחילת דרכו השתמש RavenDB במנוע האחסון ESENT.[7][8][16] בגרסה 3.0 כלל בסיס הנתונים לראשונה את מנוע האחסון הבלעדי Voron.[19][20] יישומי-לקוח (client applications) נתמכים בשפות C#, C++, Java, NodeJS, Python, Ruby ו-Go.[3]

היסטוריהעריכה

  • תמיכה ב-ACID ברמת האשכול Cluster-wide ACID transactions)

RavenDB מבטיח מאפייני ACID מלאים גם בפעולות ברמת השרת היחיד, וגם ברמת האשכול. בהתאם למאפייני ACID: כל תנועה תבוצע במלואה, או שלא תבוצע כלל.[1][10]

  • מונים מבוזרים (Distributed Counters)

ניתן לצרף למסמכים ערכים מטיפוס שלם שניתנים לעדכון על ידי יישומי-לקוח רבים ללא גרימת קונפליקטים.[27][28]

  • סדרות-זמן מבוזרות (Distributed Time-Series)

ניתן לצרף למסמכים "סדרות-זמן" לניהול נתונים בעלי חותם זמן.

  • אינדקסים אוטומטיים וידניים (Automatic and Static Indexing)

RavenDB תמיד עונה לשאילתות באמצעות אינדקס. אם לא נמצא אינדקס מתאים, בסיס הנתונים מיצר אינדקס חדש באופן אוטומטי לטיפול בשאילתות מסוג זה. משימת יצירת אינדקסים ועדכון אינדקסים קיימים מתבצעת ברקע. ניתן ליצור ולערוך אינדקסים גם ידנית.

  • שאילתות (Queries)

יישומי לקוח יכולים לשלוח לשרתים שאילתות באמצעות ביטויי LINQ או באמצעות שפת השאילתות הבלעדית RQL (Raven Query Language) - בעלת תחביר המבוסס על SQL. [1][2][3]

  • שאילתות גרף (Graph Querying)

ניתן לנסח שאילתות שמתייחסות אל מסמכים המכילים הפניות למסמכים אחרים כאל קודקודים של גרף. זה מאפשר בין השאר ניסוח של שאילתות רקורסיביות.[27][28][29]

  • הטלה (Projection) – אינדקסים ושאילתות מסוגלים לבצע עיבוד נתונים הכולל חישובים או סקריפטים.[1][3][30]
  • חיפוש טקסט-מלא (Full-text search) – ברמה הנמוכה, הנתונים מתאנדקסים (indexed) עם Lucene.net; פירוש הדבר שהאינדקסים תומכים חיפוש טקסט-מלא.[1][9][15][16][31][32]

ענן RavenDBעריכה

ענן RavenDB הוא שירות-בסיס-נתונים שהופעל בשנת 2019 במערכות AWS, Microsoft Azure ו-GCP. השירות מבצע משימות ניהול כגון תחזוקת חומרה ובטיחות המשתמשים. הוא מציג את שיתוף משאבי ה-CPU בין צמתים שונים באשכול כדי למנוע חניקה (throttling).[10][11][12]

רישיוןעריכה

RavenDB היא מערכת קוד-פתוח תחת רישיון AGPLv3 1. היא זמינה עם רישיון חופשי ורישיון מסחרי.[1]

קישורים חיצונייםעריכה

  מדיה וקבצים בנושא RavenDB בוויקישיתוף

הערות שולייםעריכה

  1. ^ 1 2 3 4 5 6 7 8 9 10 11 12 13 "RavenDB". Databases of Databases. בדיקה אחרונה ב-2 בפברואר 2019. 
  2. ^ 1 2 3 4 "Raven, a Document Database for .NET". www.infoq.com. 2010. בדיקה אחרונה ב-2 בפברואר 2019. 
  3. ^ 1 2 3 4 5 6 "RavenDB System Properties". db-engines.com. בדיקה אחרונה ב-2 בפברואר 2019. 
  4. ^ 1 2 "Other Vendors to Consider for Operational DBMSs". www.gartner.com. 2018. בדיקה אחרונה ב-2 בפברואר 2019. 
  5. ^ "Hibernating Rhino". hibernatingrhinos.com. בדיקה אחרונה ב-2 בפברואר 2019. 
  6. ^ 1 2 Kaur, Harpreet, and Kamal Jeet Kaur. "A Review: Study of Document oriented databases and their Security." International Journal of Advanced Research in Computer Science 4.8 (2013).
  7. ^ 1 2 3 "Ayende's DivanDB (also, is esent the most widely used database engine?)". blogs.msdn.microsoft.com. 2008. בדיקה אחרונה ב-2 בפברואר 2019. 
  8. ^ 1 2 "Hidden Windows Gems: Extensible Storage Engine". ayende.com. 2008. בדיקה אחרונה ב-2 בפברואר 2019. 
  9. ^ 1 2 "RavenDB vs SQL Server". www.integrace.nl. 2012. בדיקה אחרונה ב-2 בפברואר 2019. 
  10. ^ 1 2 3 4 5 "RavenDB Launches Managed Cloud Service". www.datanami.com. 2019. בדיקה אחרונה ב-2 בפברואר 2019. 
  11. ^ 1 2 "SD Times news digest: Google robots.text parser open sourced, Bonitasoft’s cloud and low-code capabilities, and OWASP ZAP 2.8". sdtimes.com. 2019. בדיקה אחרונה ב-2 בפברואר 2019. 
  12. ^ 1 2 "New capabilities in database infrastructure service ensure high availability in Cloud-only scenarios". it.toolbox.com. 2019. בדיקה אחרונה ב-2 בפברואר 2019. 
  13. ^ "RavenDB goes live!". ayende.com. 2010. בדיקה אחרונה ב-2 בפברואר 2019. 
  14. ^ "RavenDB 2.0 RTM". ayende.com. 2013. בדיקה אחרונה ב-2 בפברואר 2019. 
  15. ^ 1 2 3 4 5 "RavenDB". learning.oreilly.com. בדיקה אחרונה ב-2 בפברואר 2019. (הקישור אינו פעיל)
  16. ^ 1 2 3 4 5 "A document database for the .NET platform". learning.oreilly.com. בדיקה אחרונה ב-2 בפברואר 2019. 
  17. ^ "RavenDB 2.5 Release Candidate is out". ayende.com. 2013. בדיקה אחרונה ב-2 בפברואר 2019. 
  18. ^ "RavenDB 3.0 RTM". ayende.com. 2014. בדיקה אחרונה ב-2 בפברואר 2019. 
  19. ^ 1 2 "NoSQL for .NET: RavenDB 3.0 Takes Flight". visualstudiomagazine.com. 2014. בדיקה אחרונה ב-2 בפברואר 2019. 
  20. ^ 1 2 "NoSQL: RavenDB 3.0 erhält weitere Storage Engine". www.heise.de. 2014. בדיקה אחרונה ב-2 בפברואר 2019. 
  21. ^ 1 2 "RavenDB 3.5 RTM released". ayende.com. 2016. בדיקה אחרונה ב-2 בפברואר 2019. 
  22. ^ "RavenDB 4.0 is out". ayende.com. 2018. בדיקה אחרונה ב-2 בפברואר 2019. 
  23. ^ "NoSQL: RavenDB 4.0 jetzt für Windows, Linux, macOS und Docker verfügbar". www.heise.de. 2018. בדיקה אחרונה ב-2 בפברואר 2019. 
  24. ^ 1 2 "RavenDB 4.1 Release Candidate is out". ayende.com. 2018. בדיקה אחרונה ב-2 בפברואר 2019. 
  25. ^ "RavenDB 4.2 has been released". ayende.com. 2019. בדיקה אחרונה ב-2 בפברואר 2019. 
  26. ^ "The Design of RavenDB 4.0: The Implications of the Blittable Format". dzone.com. 2016. בדיקה אחרונה ב-2 בפברואר 2019. 
  27. ^ 1 2 "RavenDB Adds Graph Queries". www.datanami.com. 2019. בדיקה אחרונה ב-2 בפברואר 2019. 
  28. ^ 1 2 "SD Times news digest: New Relic One, WhiteSource for Developers, RavenDB4.2, and VMware’s acquisition of Bitnami". sdtimes.com. 2019. בדיקה אחרונה ב-2 בפברואר 2019. 
  29. ^ "Graph API". ravendb.net. בדיקה אחרונה ב-2 בפברואר 2019. 
  30. ^ "Data Modeling with Indexes in RavenDB". www.codeproject.com. 2019. בדיקה אחרונה ב-2 בפברואר 2019. 
  31. ^ Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105-115.
  32. ^ "Data Points - What the Heck Are Document Databases?". docs.microsoft.com. 2011. בדיקה אחרונה ב-2 בפברואר 2019.