Redis or not

טוב זה קצת pun על הצליל, אבל הפוסט הזה עוסק בRedis – עוד מסד נתונים בקוד פתוח שאומר לא לSQL. ואת האמת, הוא לא זקוק לשפה הזו בכלל …

למי שלא מכיר, אז Redis הוא מסד נתונים אשר מספק מערכת Key value עם הרבה יכולות. הוא מאפשר לי ליצור הרבה מעבר ל key value, ולמעשה הוא סוג של data struct manager.

פירוש השם הוא קיצור של מספר מילים ולא כתיבה שגויה של צנון: REmote Dictionary Server. רק אם תהיתם במקרה.

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

זה על רגל אחת על מסד הנתונים הזה.

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

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

חשבתי בהתחלה על איזה רישיון אני רוצה לשים לפרוייקט, היות ומדובר במימוש פרוטוקול ללקוח, ולא ביצוע binding. והתייצעתי בwhatsup והחלטתי להשתמש ברישיון LGPL3 אשר כל כך אהוב על הנביא סטולמן (אבל לא באמת), עם קורטוב של שינוי, בו אני מאפשר להשתמש בקוד שכתבתי גם בתוך קובץ הריצה, אבל רק אם יש שינויים, תוספות וכו', אתה מחוייב לשחרר חזרה את הקוד, ועוד מחוייב להשתמש ברישיון הזה. אבל אם אתה רק משתמש בקוד, תעשה מה שבראש לך.

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

מה הכוונה ? ובכן נגיד ואני משתמש בפקודה AUTH בשביל לקבל הזדהות של סיסמה מהשרת (חכו, אני עוד לא מדבר על הבעיות האחרות איתה). אוקי, אני מבין שאני יכול לקבל תשובה של OK, אבל אילו הודעות שגיאה אני יכול לקבל כאן ? מה ההתנהגות הזו דורשת ממני ? האם כל פעם שאני מריץ פקודה אני צריך להשתמש בה לפני ? האם זה פר סשן, או משהו אחר ? חסר כל כך הרבה מידע בנושא.

יותר מזה, התקן לא מדבר על תקשורת מאובטחת – קרי תעודות הצפנה. האם זה אומר שאין תמיכה ? או האם יש תמיכה, אבל היא לא מתעודת ? זוכרים את AUTH ? הרי אני שולח מידע לא מאובטח ברשת TCP, למרות שהוא תומך גם ב unix sockets אבל זה עוד דבר שלא כתוב בפרוטוקול עצמו., אלא רק אחרי חיטוט בקוד של אחרים + בקובץ ההגדרות שגיליתי על כך. בקיצור התעוד לוקה בחסר. לפחות למי שמממש את הפרוטוקול עצמו.

אולי זו הסיבה שהיוצר המקורי של מסד הנתונים, גם יצר את מרבית הלקוחות הקיימים בשוק למסד הנתונים בשפות שונות.

3 מחשבות על “Redis or not

  1. eluzix

    אני משתמש ב – redis על מערכת חייה בערך שנה כבר אבל מעולם לא צללתי לעניין ה AUTH. יכול להיות מעניין לשמוע מה מצאת על הפרוטוקול, האם יש דרך מובנית (אך לא מתועדת) לאבטח את התקשורת?

    1. ik_5 מאת

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

  2. פינגבק: Redis סיבוב שני | לראות שונה

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s