יישום ייבוא מוצרים מצטבר: רק שינויים

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

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
יישום ייבוא מוצרים מצטבר: רק שינויים
בינוני
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1201
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    619

תארו לעצמכם שאתם מנהלים חנות מקוונת עם קטלוג של 300,000 מוצרים. כל לילה מתבצע ייבוא מלא—השרתים בעומס של 100%, מסד הנתונים ננעל, ולקוחות מתלוננים על מחירים מיושנים ועיכובים בעיבוד הזמנות. אך במציאות, לא יותר מ-5% מהמבחר באמת משתנה; 95% האחרים נטענים מחדש ללא צורך. מצב זה מוכר לפרויקטים רבים של מסחר אלקטרוני. אופטימיזציה זו יכולה לחסוך מעל $2,500 בחודש בעלויות שרת ומסד נתונים עבור קטלוגים בינוניים, ועבור גדולים יותר, החיסכון יכול לעלות על $6,000 בחודש.

אנו פותרים בעיה זו עם ייבוא מוצרים אינקרמנטלי: שיטת סנכרון קטלוג שמעדכנת רק פריטים שהשתנו. ייבוא מוצרים אינקרמנטלי מהיר פי 10 מטעינות מלאות ומפחית את עומס השרת ב-80%. במשך מספר שנים, יישמנו גישה זו עבור 15 פרויקטים—מחנויות קטנות ועד מרקטים עם קטלוגים של עד 500,000 SKU. המומחיות שלנו מבטיחה שתקבלו פתרון עובד במהירות. תהליך היישום המוסמך שלנו מבטיח פתרון אמין במסגרת לוחות הזמנים שלכם.

ייבוא אינקרמנטלי (ייבוא דלתא) הוא שיטת סנכרון שמעדכנת רק רשומות שהשתנו. אופטימיזציית ייבוא זו מפחיתה את עומס השרת ב-80% ומקצרת את זמן הייבוא פי 10 בהשוואה לטעינות מלאות. לדוגמה, בפרויקט עם קטלוג של 200,000 SKU, צמצמנו את זמן הסנכרון מ-3 שעות ל-18 דקות באמצעות שימוש בחותמות זמן והשוואת hash לאמינות. כל עדכון מוצר מעובד בנפרד, מה שמוביל לחיסכון משמעותי במשאבים.

בחירת אסטרטגיית זיהוי שינויים

הבחירה תלויה ביכולות מקור הנתונים. הטבלה שלהלן משווה בין הגישות העיקריות:

שיטה אמינות מורכבות יישום מקרה שימוש
חותמת זמן updated_at בינונית (עלולה לפספס שינויים בעדכונים תכופים) נמוכה API עם מסנן תאריך
סמן / יומן שינויים גבוהה (לעולם לא מפספסת שינויים) בינונית API עם מזהה אינקרמנטלי
השוואת hash (md5/json) בינונית (תלויה בשלמות שדה ה-hash) בינונית מקור ללא סינון שינויים
קבצי Diff גבוהה (אותות ברורים של יצירה/עדכון/מחיקה) גבוהה ספק מספק רשימות מחירים אינקרמנטליות

נבחן כל שיטה בפירוט.

חותמת זמן

הגישה הנפוצה ביותר—הספק תומך בסינון לפי תאריך שינוי: GET /api/products?updated_after=2024-01-15T10:00:00Z. המערכת זוכרת את זמן הסנכרון המוצלח האחרון ומעבירה אותו בבקשה הבאה. שיטת ייבוא זו המבוססת על חותמת זמן פשוטה אך עלולה לפספס שינויים המתרחשים במהלך העיבוד. לכן, אנו תמיד רושמים את זמן תחילת הסנכרון, לא את סופו.

סמן / יומן שינויים

הספק מנהל יומן שינויים עם מזהה הולך וגדל. אמין יותר מחותמת זמן: לא מפספסים שינויים במהלך העיבוד. דוגמה: GET /api/changes?since_id=48291. ייבוא מבוסס סמן אמין יותר ומתאים ל-API עם תדירות עדכון גבוהה.

השוואת Hash

כאשר המקור אינו תומך בסינון שינויים—אנו משווים את ה-hash של שורת הנתונים:

$hash = md5(serialize([ $row['price'], $row['qty'], $row['name'], $row['description'] ])); 

השורה מעובדת רק אם ה-hash השתנה. שיטה זו עובדת היטב כאשר הנתונים מגיעים כייצוא מלא, אך אנו רוצים לעבד רק רשומות שהשתנו.

קבצי Diff

הספק מפרסם קובץ diff שעתי במקום רשימת מחירים מלאה:

<changes>
  <updated id="SKU-123">
    <price>4990</price>
    <qty>15</qty>
  </updated>
  <updated id="SKU-456">
    <qty>0</qty>
  </updated>
  <deleted id="SKU-789"/>
  <created id="SKU-999">
    <!-- полные данные -->
  </created>
</changes>

שיטה זו היא המדויקת ביותר אך דורשת תמיכה מהספק.

שלבי יישום

  1. ניתוח יכולות מקור הנתונים שלכם (API, קבצי ייצוא).
  2. בחירת אסטרטגיית זיהוי השינויים המתאימה (חותמת זמן, סמן, hash או diff).
  3. יישום מעקב מצב במסד הנתונים שלכם.
  4. בניית צינור הייבוא האינקרמנטלי.
  5. הוספת זיהוי מחיקות באמצעות anti-joins.
  6. יישום הגנה מפני ריצה כפולה באמצעות נעילה מבוזרת.
  7. בדיקה עם הקטלוג שלכם ופריסה.

כיצד אנו מיישמים ייבוא אינקרמנטלי

מעקב מצב

מצב הסנכרון נשמר במסד הנתונים. אנו משתמשים בטבלה ייעודית:

CREATE TABLE import_sync_state (
    source_id int PRIMARY KEY REFERENCES import_sources(id),
    last_sync_at timestamptz,
    last_cursor varchar(200),
    last_change_id bigint,
    items_synced bigint DEFAULT 0,
    updated_at timestamptz DEFAULT now()
);

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

צינור ייבוא אינקרמנטלי

המחלקה המרכזית שמבצעת סנכרון:

class IncrementalImportJob implements ShouldQueue {
    public function handle(
        SyncStateManager $state,
        SupplierApiClient $client,
        IncrementalProductSync $sync,
    ): void {
        $since = $state->getLastSyncAt($this->sourceId);
        $state->markSyncStarted($this->sourceId);
        $stats = ['created' => 0, 'updated' => 0, 'deleted' => 0, 'skipped' => 0];
        foreach ($client->fetchUpdatedSince($since) as $item) {
            $result = $sync->process($item, $this->sourceId);
            $stats[$result]++;
        }
        $state->markSyncCompleted($this->sourceId);
        $this->logResult($stats);
    }
}

זיהוי פריטים שנמחקו

אם המקור אינו שולח אותות מחיקה מפורשים, אנו משתמשים ב-anti-join דרך טבלה זמנית (עבור קטלוגים מ-50,000 SKU):

CREATE TEMP TABLE current_import_skus (sku varchar(100));
COPY current_import_skus FROM STDIN;
UPDATE products SET deleted_at = now() WHERE source_id = $1 AND deleted_at IS NULL AND sku NOT IN (SELECT sku FROM current_import_skus);
DROP TABLE current_import_skus;

הגנה מפני ריצה כפולה

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

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

מה כלול בעבודה

  • פיתוח מעקב מצב לאחסון מצב סנכרון
  • יישום אסטרטגיית זיהוי השינויים שנבחרה (חותמת זמן, סמן, hash, diff)
  • מנגנון לזיהוי וטיפול בפריטים שנמחקו
  • הגנה מפני ריצה כפולה באמצעות נעילה
  • בדיקה על קטלוגים של עד 500,000 SKU
  • תיעוד לפריסה וניטור

לוחות זמנים משוערים

שלב זמן
יישום בסיסי (חותמת זמן, מנהל מצב, hash) מיומיים
זיהוי מחיקות ונעילה +יום אחד
תמיכה בסמן וקבצי diff +1–2 ימים

לוחות הזמנים המדויקים תלויים במורכבות API הספק ובגודל הקטלוג. צרו קשר להערכת פרויקט—נכין הצעה מותאמת אישית ונראה כיצד ייבוא אינקרמנטלי יכול להפחית את עלויות התשתית שלכם בעד 80%. בקשו יישום ייבוא אינקרמנטלי וקבלו ייעוץ לאופטימיזציית סנכרון הקטלוג שלכם.