דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. כיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#)

כיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#)

מתוזמן נעוץ נעול הועבר תכנות
14 פוסטים 5 כותבים 191 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • pcinfogmachP מנותק
    pcinfogmachP מנותק
    pcinfogmach
    כתב נערך לאחרונה על ידי pcinfogmach
    #1

    יש לי קובץ בינארי עם blobs של מידע בגודל אחיד. אני רוצה לכווץ אותו אבל לגשת למידע באופן ישיר (כלומר אם למשל אני רוצה לגשת לblob מספר ארבע). בסוף הקובץ ישנו מספר שאומר מהו אורך הblobs בתוך הקובץ (יש עוד דברים בקובץ). כאשר אני מקווץ את הקובץ אני לא מצליח לגשת למידע הזה וממילא גם לא לblobs.
    ייתכן שאפילו לא שאלתי את השאלה בצורה נכונה כי אני עם ארץ גמור בנושאים אלו אשמח לקבל כל עזרה או הסבר.
    נ.ב. אני עובד ב-C# מה שניסתי הוא gzip
    כמו"כ אני לא רוצה לקרוא את כל הקובץ בבת אחת זה קובץ מאוד מאוד כבד.

    תגובה 1 תגובה אחרונה
    0
    • OdedDvirO מנותק
      OdedDvirO מנותק
      OdedDvir
      כתב נערך לאחרונה על ידי
      #2

      אתה יכול לייצר תבנית קובץ משלך, שמכילה את ה-metadata הזה, ואת הכיווץ כל blob בנפרד (לקמן zlob)
      מבנה הקובץ
      metadata
      zlob
      zlob
      ...
      ה-metadata יכיל את המיקום בקובץ של כל zlob
      זה יאפשר לך לטעון במהירות רק את ה-zlob הרצוי לפי דרישה ולפרוס אותו ל-blob

      pcinfogmachP תגובה 1 תגובה אחרונה
      3
      • dovidD מחובר
        dovidD מחובר
        dovid ניהול
        כתב נערך לאחרונה על ידי
        #3

        לא מבין את הסיטואציה, למה הקובץ מכווץ ומה הבעיה לחלץ אותו?

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        pcinfogmachP תגובה 1 תגובה אחרונה
        1
        • pcinfogmachP מנותק
          pcinfogmachP מנותק
          pcinfogmach
          השיב לOdedDvir נערך לאחרונה על ידי
          #4

          @OdedDvir
          תודה ברם אם הבנתי נכון Zlob תופס הרבה יותר מקום מאשר קובץ שכולו מכווץ.

          yossizY OdedDvirO 2 תגובות תגובה אחרונה
          0
          • pcinfogmachP מנותק
            pcinfogmachP מנותק
            pcinfogmach
            השיב לdovid נערך לאחרונה על ידי pcinfogmach
            #5

            הקובץ מכיל אינדקס בסופו עם בלובים בגודל קבוע המכילים מידע על מיקומים וגדלים של בלובים בגודל בלתי קבוע בתוך המסמך, בסוף הקובץ ישנו מספר שמתאר את אורך האינדקס.
            כאשר הקובץ מכווץ (למשל עם Gzip), הגישה הישירה לאינדקס נקטעת. אני לא מצליח לקרוא את האינדקס מבלי להסיר את הכיווץ מכל הקובץ קודם.

            בעצם אני מדבר על Random acces לחלקים מתוך התוכן של קובץ מכווץ.

            קומפיונטק תגובה 1 תגובה אחרונה
            0
            • קומפיונטק מנותק
              קומפיונטק מנותק
              קומפיונט
              השיב לpcinfogmach נערך לאחרונה על ידי
              #6

              @pcinfogmach אם אתה יכול לשנות את מבנה הקובץ, אז תשנה אותו כמו שכתב @OdedDvir שהמידע על ה - blobים יהיה בתחילת הקובץ (offset, length) ורק ה blobים עצמם יהיו מכווצים, לא כל הקובץ.

              pcinfogmachP תגובה 1 תגובה אחרונה
              1
              • pcinfogmachP מנותק
                pcinfogmachP מנותק
                pcinfogmach
                השיב לקומפיונט נערך לאחרונה על ידי pcinfogmach
                #7

                @קומפיונט
                הבנתי אז זהו הדרך האופטימלית להשתמש עם zlobs תודה - אנסה ליישם זאת.

                תגובה 1 תגובה אחרונה
                1
                • yossizY מנותק
                  yossizY מנותק
                  yossiz
                  השיב לpcinfogmach נערך לאחרונה על ידי yossiz
                  #8

                  @pcinfogmach כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

                  ברם אם הבנתי נכון Zlob תופס הרבה יותר מקום מאשר קובץ שכולו מכווץ

                  כדי לקבל random access נדמה לי שאין לך ברירה. מה שכן אפשר לבדוק זה אפשרות של "מילון" מותאם אישית משותף לכל ה-blob-ים המכווצים. זה אמור להיות כמעט זהה לכיווץ כל הקובץ (ההשפעה שיהיה לזה על הדחיסה תלוי מאוד בתוכן ה-blob-ים)
                  ע"ע: https://github.com/EamonNerbonne/ZlibWithDictionary

                  נ.ב. אם לא היה מספיק ברור: zlob זו מילה מומצאת ל-blob מכווץ
                  עריכה: אני רואה ש-mysql כבר המציאו את המילה

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  תגובה 1 תגובה אחרונה
                  2
                  • OdedDvirO מנותק
                    OdedDvirO מנותק
                    OdedDvir
                    השיב לpcinfogmach נערך לאחרונה על ידי
                    #9

                    @pcinfogmach כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

                    @OdedDvir
                    תודה ברם אם הבנתי נכון Zlob תופס הרבה יותר מקום מאשר קובץ שכולו מכווץ.

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

                    @yossiz כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

                    עריכה: אני רואה ש-mysql כבר המציאו את המילה

                    חח, אשרי שכיוונתי 🤣

                    dovidD תגובה 1 תגובה אחרונה
                    2
                    • dovidD מחובר
                      dovidD מחובר
                      dovid ניהול
                      השיב לOdedDvir נערך לאחרונה על ידי dovid
                      #10

                      @OdedDvir כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

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

                      זה עיקרון נכון על כמויות קטנות.
                      אם החומר הוא למשל טקסטואלי, אז אם מדובר בחתיכות מספיק גדולות (2 מגה למשל) אין משמעות ריאלית כמעט לתוספת, למרות שהתיאוריה נשארת בלי סוף.

                      @pcinfogmach
                      אם מדובר בחתיכות קטנות יותר, אז אני מבין סוף סוף את השאלה. התשובה היא הכיוון ש@yossiz הציע, דחיסה מבוססת מילון משותף, או מילון סטטי.
                      אם אני מנחש נכון ומדובר בטקסטים תורניים זה עלול גם לשפר יעילות+ביצועי דחיסה/פריסה.

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      dovidD pcinfogmachP 2 תגובות תגובה אחרונה
                      2
                      • dovidD מחובר
                        dovidD מחובר
                        dovid ניהול
                        כתב נערך לאחרונה על ידי dovid
                        #11

                        ניסיתי כעת בעצמי את ספריית ZstdNet על קובץ יבמות של תורת אמת (MN_YEVAMOT_L2.txt) עם אימון מול כל השורות ודחיסה של כל שורה בנפרד, תוצאות מצויינות: כלל השורות ביחד 12% לעומת 40% בGZipStream.

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                        תגובה 1 תגובה אחרונה
                        4
                        • dovidD מחובר
                          dovidD מחובר
                          dovid ניהול
                          השיב לdovid נערך לאחרונה על ידי
                          #12

                          @dovid כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

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

                          יעילות הדחיסה אכן השתפרה:

                          ניסיתי כעת בעצמי את ספריית ZstdNet על קובץ יבמות של תורת אמת (MN_YEVAMOT_L2.txt) עם אימון מול כל השורות ודחיסה של כל שורה בנפרד, תוצאות מצויינות: כלל השורות ביחד 12% לעומת 40% בGZipStream.

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

                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                          dovidD תגובה 1 תגובה אחרונה
                          2
                          • dovidD מחובר
                            dovidD מחובר
                            dovid ניהול
                            השיב לdovid נערך לאחרונה על ידי
                            #13

                            @dovid כתב בכיווץ קובץ בינרי מבלי לפגוע בגישה הישירה ל-blobs שבתוכו (C#):

                            פה השאלה היא על יעילות פריסה ולא על דחיסה (שכנראה לא מבוצעת בשגרה), זה אבדוק בהמשך בע"ה.

                            ZstdNet יותר יעיל משמעותית בחילוץ עם מילון (יותר מפי שלוש מחילוץ gzip).

                            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                            בכל נושא אפשר ליצור קשר dovid@tchumim.com

                            תגובה 1 תגובה אחרונה
                            2
                            • pcinfogmachP מנותק
                              pcinfogmachP מנותק
                              pcinfogmach
                              השיב לdovid נערך לאחרונה על ידי pcinfogmach
                              #14
                              פוסט זה נמחק!
                              תגובה 1 תגובה אחרונה
                              0

                              בא תתחבר לדף היומי!
                              • התחברות

                              • אין לך חשבון עדיין? הרשמה

                              • התחברו או הירשמו כדי לחפש.
                              • פוסט ראשון
                                פוסט אחרון
                              0
                              • דף הבית
                              • קטגוריות
                              • פוסטים אחרונים
                              • משתמשים
                              • חיפוש
                              • חוקי הפורום