יום שני, 25 בינואר 2010

056 - לא רק אס קיו אל - nosql



הפעם הקלטנו לבד ללא אורחים
  • קצת רקע היסטורי, על בסיסי נתונים רלציונים ושווקים שחייבים אותם
  • מה בסיסי נתונים רלציונים יודעים לתת ומה לא, ומה זה ACID
  • כאשר ה- data גדל - צריך לפצל, על מה אפשר לוותר?
  • פתרון ביניים: sharding עד מתי? סיפור מקרה של eBay
  • התיאוריה של Brewer CAP (Consistency, Availability, Partition tolerance)
  • כמה עולה להתפשר על consistency, רמות שונות וסוגי אפליקציות שבהן זה מתאפשר
  • זה בסדר קצת לשחרר את הלחץ של consistency, מה מרוויחים?
  • מוצרים נפוצים BigTableHBaseDynamoCassandra והפתרונות של MySQL
  • רמות שונות של eventual consistency: causal consistency, read-your-writes , monotonic read/write
  • למה בחרנו ב- Cassandra?
חומר נוסף מתוך הבלוג של רן: חלק ראשון (רקע תיאורטי)חלק שני (Cassandra)


הקובץ נמצא כאן
האזנה נעימה ותודה לגיא על התקציר

10 תגובות:

  1. לא מעט מפתרונות ה-noSQL מאפשרים גידול של הנתונים על ידי חלוקת הנתונים על פני מספר שרתים באופן דומה ל-sharding עם hash function כפי שציינתם שניתן לעשות עם מסדי נתונים רלצניוניים קלאסיים.
    היתרון המשמעותי של פתרונות ה-noSQL הוא בעובדה שהם נכתבו לצורך עבודה זו - כלומר התכנון הפנימי שלהם נועד לעבודה על פני שרתים רבים. הליבה של מסדי הנתונים הרלציוניים הקלאסיים נכתבה לפני 20 שנה, והם לא תוכננו לסוג כזה של עבודה.
    היתרון השני הוא שמרבית הפתרונות הפופולריים היום נתמכים על קוד פתוח, כך שעלות השימוש בהם נמוכה.
    מצד שני, הם דורשים כתיבת קוד נוסף כיוון שהפתרונות הללו מספקים פונקציונאליות בסיסית יותר. אם אתם מנוסים בשימוש עם מסדי נתונים רלציוניים, אתם יכולים להשיג תוצאות משמעותיות עם הפתרונות הקיימים. אתם יכולים לראות את ההרצאה של youtube:
    http://www.youtube.com/watch?v=ZW5_eEKEC28

    השבמחק
  2. עומר, מה שאתה אומר הוא נכון מאוד. הקלטנו היום פרק המשך באותו נושא.
    תודה על הוידאו של קון מיוטיוב - עבדתי איתו אבל לא ידעתי על הוידאו שלו

    השבמחק
  3. היה מאוד מעניין. מתוכנן המשך?
    שימי

    השבמחק
  4. מעניין אותי מה היתרונות והחסרונות של Voldemort מול cassandra ?

    השבמחק
  5. הי איל, מהיכרותי המועטה עם לורד וולדמורט, זהו דאטביים מבוסס key-value בזמן שקסנדרה נותן מודל יותר עשיר הקרוי column oriented שזה משהו כמו key-multiple-values עם עוד כל מיני צ'יכלולים.  

    השבמחק
  6. אני משתמש בוולדמורט (עכשיו ובחברה הקודמת בה עבדתי) אך לא יצא לי להשתמש בקסנדרה עדיין (מקווה להתקין בקרוב). סיכום קצר ממה שאני יודע:
    * Cassandra supports range queries under certain conditions, so if you need that then cassandra is better.
    * Voldemort versioning seems to be more capable; cassandra appears to do "last update wins" based purely on a timestamp to resolve inconsistency, which is OK for some applications, but lacks the flexibility to do client-side inconsistency resolution and updating values based on bad reads (sort of transactional). So what Voldemort is doing is more sophisticated, but for some applications the difference is probably not all that important.
    * Voldemort supports client and server routing . Cassandra does only server routing. This would mean slightly better theoretical latency for
    Voldemort just from that.
    * Voldemort uses pluggable back-ends (BDB, MySQL, in memory readonly and more), many of them mature, so it offloads some of the risk whereas Cassandra implements everything. Each approach has advantages and disadvantages.
    * Cassandra only supports String keys while Voldemort support anything with a Serializer. I use Google's Protobuf for heavy numeric datastractures which speeds up things a lot and simple strings or JSON for others.
    * Voldemort has a very simple API (no need for thrift etc)

    השבמחק
  7. Forgot to mention another nice feature coming to Voldemort which is the views. It enables the server to return a transformation of the data to the client. For example, if you already have large values on the server and one day you want only a small subset (Foo) of the value (Bar) to be return you can add a view which returns Foo which is a transformation of Bar.
    You can see it as a stored procedures you can write in Java which may reduce the network bandwidth, usually more expensive then CPU, of moving too much data on the wire.

    השבמחק
  8. Thanks Eishay, we've also answered the question in podcast 60, on its way although not as knowledgeable as your answer...

    השבמחק
  9. מצאתי כלי מדליק שמאפשר לסרוק רשתות שלמות ולאתר שרתי SQL
    וגם מאפשר לנסות לפצח את הסיסמא שלהם במהירות
    (עובד גם ברשתות מקומיות וגם באינטרנט:-)
    זה הלינק:
    http://www.softpedia.com/get/Internet/Servers/Database-Utils/SQL-Locator.shtml

    מכירים כלים נוספים לסוגי SQL אחרים? (להשלמת ארגז הכלים - בעיקר לאבטחת מידע)

    השבמחק