Hacimde Yükleme
19 dilde daha mevcut
English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Polski · Tiếng Việt · ไทย · Українська · Español (México) · Français (Canada) · Deutsch (Schweiz)

Data Architect kursunun 10. bölümü olan Taşıma ve Eşitleme bölümündeki 5 modülden 2.‘si. Her modül kendi başına okunabilir. Önceki: Taşıma Önce Bir Kalite Projesidir · Sonraki: Yükleme Sırasında Otomasyon
Bu modülün yanıtladığı soru: Sıfır Sayısı, veriyi Salesforce’a yükleme biçiminizi nasıl değiştirir?
On kayıt mı? Neredeyse elle yazabilirim. Bin mi? Artık bir araca ihtiyacım var. Bir milyon mu? Bu bir mimari sorundur. İşlem değişmedi (kayıt oluştur veya güncelle), ama Sıfır Sayısı onu nasıl yaptığımı değiştiriyor. Bunu modellemede, sorgularda, paylaşımda ve entegrasyonlarda gördük; taşıma da farklı değil. Hacimde, veriyi nasıl taşıdığımı, onu nasıl işlere böldüğümü, hangi sırayla taşındığını, ben yüklerken Salesforce’un başka ne yaptığını, bir şey başarısız olduğunda nasıl kurtardığımı ve her şeyi yeniden çalıştırıp çalıştıramayacağımı önemserim.
Start With the Picture
Bölüm başlığı “Start With the Picture”Same landscape, same amber arrow as module 1: RouteDesk’s open work coming into Salesforce the weekend RouteDesk retires. ⟲
Module 1 decided what moves on this arrow. This module is about how it moves. ⟲
Module 1 decided what comes in: the deliveries not yet made and the ones still inside the 60-day claim window, about 196,400 deliveries. Each one becomes a Work Order, with its line items (about 1.6 per delivery, so about 314,000) and its Service Appointment (about 196,400 more). That’s roughly 707,000 records, prepared in the preparation data store and ready to go. Not millions, but well past anything I’d send one record at a time. So, how do they get in? ⟲
Bankanın Arkasındaki Yükleme Rampası
Bölüm başlığı “Bankanın Arkasındaki Yükleme Rampası ”Bulk API’yi öğretirken bankayı kullanırım. Bir deste yatırımla içeri girersiniz ve vezne görevlisi 200’ünü alıp sizi sıranın sonuna gönderir. Bir milyon kayıtla bu sıradan 5.000 kez geçmek, 5.000 API çağrısı demektir. Bu sırada bankanın yanına bir kamyon yanaşır, devasa miktarda yatırımı boşaltır ve siz hâlâ sıradayken yirmi dakika sonra uzaklaşır. Bu yükleme rampasıdır ve adı Bulk API’dir.
The 200 is still real. A REST sObject Collections request takes “up to 200 records” (Create Records Using sObject Collections (yeni sekmede açılır), REST API Developer Guide), and a SOAP create() call the same: “If a create request exceeds 200 records, then the entire operation fails” (create() (yeni sekmede açılır), SOAP API Developer Guide; both checked 2026-10-27). Every 200 more records is another call. RouteDesk’s 707,000 records would be over 3,500 trips to the teller. ⟲
Same records, different door. ⟲
Yükleme rampasının beş adımı vardır:
- İşi açın. Kırmızı zile basın ve bir bilet alın: iş kimliği.
- Yükleyin. Rampa açılır ve CSV dosyalarınızı o bilete karşı yüklersiniz, bir dosya ya da yüz.
- İşi kapatın. Büyük mavi düğmeye basana kadar Salesforce bitirdiğinizi bilmez: yükleme tamamlandı. Şimdi işlemeye başlar.
- “Geldik mi?” Arka koltuktaki çocuklarım gibi: iş kimliğinizle bitip bitmediğini sorarsınız. Bitti mi? Bitti mi?
- Sonuçları alın. Başarılı kayıtları (yeni Salesforce kimlikleriyle) veya başarısız olanları (hatalarıyla) indirin.
Submit, wait, collect. ⟲
Bir milyon kayıt binlerce yerine bir avuç çağrıya mal olur. Ama neyin değiştiğine dikkat edin: iş eşzamansızdır. Kayıt başına bir yanıt almazsınız; gönderir, bekler ve toplarsınız. Bu yüzden çağıranın neyin gönderildiğini, neyin hâlâ işlendiğini, neyin tamamlandığını, neyin başarısız olduğunu ve neyin geri geldiğini bilmesi gerekir. Bu bir API ayrıntısı değil. Taşıma kontrolüdür.
İki Yükleme Rampası: Bulk API 2.0 ve Bulk API
Bölüm başlığı “İki Yükleme Rampası: Bulk API 2.0 ve Bulk API ”İki sürüm var ve hangisini kullandığınız önemli.
- Bulk API 2.0 is the one to start with. You upload the data for a job and Salesforce splits it into batches for you, retries for you and runs them in parallel. A job can take 150 MB, measured after Salesforce encodes it, so Salesforce advises uploading no more than 100 MB of CSV per job. ⟲
- Bulk API (1.0) makes you create the batches yourself, up to 10,000 records each. It’s older, but it still has two levers 2.0 doesn’t give you: serial mode for loads, and PK chunking for very large exports (module 5). ⟲
Both share a rolling 24-hour allowance of 15,000 batches, and either can load up to 150 million records in 24 hours. Job results are kept for seven days after the job completes (Bulk API and Bulk API 2.0 Limits and Allocations (yeni sekmede açılır), checked 2026-10-27). Salesforce’s line between the doors: “Any data operation that includes more than 2,000 records is a good candidate for Bulk API 2.0”; below that, “bulkified” synchronous calls are fine (Loading Data from the API (yeni sekmede açılır), Best Practices for Deployments with Large Data Volumes, Winter ‘27, checked 2026-10-27). Those are today’s numbers: check them before you plan around them. ⟲
Tekli, kümeler ve toplu, işin biçimini düşünme yolumdur: bir kullanıcı eyleminden tek bir güncelleme, bir iş sürecinden birkaç yüz ilişkili kayıt, bir taşımada milyonlarca tarihsel kayıt. Bunlar ürün adları değil. Aracı seçmeden önce işin biçiminin ne olduğunu sorun.
Test knowledge. Know when the Bulk API is the answer: more than about 2,000 records, asynchronous, a job you submit and collect. Know the two versions apart: Bulk API 2.0 splits the batches for you and runs them in parallel; Bulk API (1.0) has you build batches of up to 10,000 records, and only it offers serial mode and PK chunking. Both share 15,000 batches in a rolling 24 hours. ⟲
Araç Mimariyi Ortadan Kaldırmaz
Bölüm başlığı “Araç Mimariyi Ortadan Kaldırmaz ”“Bulk API kullanacağız.” Tamam. Bu bana hangi nesnelerin önce yüklendiğini, ekleme mi upsert mi olduğunu, harici anahtarın ne olduğunu, ilişkilerin nasıl yeniden kurulduğunu, bazı kayıtlar başarısız olduğunda ne olduğunu, işlerin paralel çalışıp çalışamayacağını, paralel işin aynı üst kayıtlar için çekişip çekişmeyeceğini, hangi otomasyonun çalışacağını ya da nasıl uzlaştırıp yeniden başlatacağımızı söylemez. Bulk API bir taşıma (nakliye) sorununu çözer. Taşımayı çözmez.
The order comes from the model, and module 1 drew it for RouteDesk: reference data first, then the Work Orders, then their line items and appointments, then the claim Cases that point at them (Preserve the Source Identity, and Load by Keys). Each wave is its own job, and the next one doesn’t start until the last one’s results are in. Junction objects depend on two parents, self-referencing hierarchies may need several passes, and circular relationships may need records first and relationships second. Don’t discover these on cutover weekend. ⟲
Bazen önce kaydı, sonra ilişkiyi yüklersiniz. Bir ana şirket, bir yan kuruluş ve bölgesel bir yan kuruluş, hepsi taşımada oluşturuluyor. Her ilişkiyi tek geçişte çözmek yerine hesapları kararlı kaynak anahtarlarıyla yükleyin, sonra hiyerarşiyi kuran ikinci bir geçiş çalıştırın. Aynı fikir kendine aramalar ve döngüsel bağımlılıklarda da işe yarar. Amaç tek geçiş değil. Amaç deterministik, tekrarlanabilir bir sonuçtur.
Ekleme, Güncelleme ya da Upsert
Bölüm başlığı “Ekleme, Güncelleme ya da Upsert ”Insert says create this as new. Update says I already know the Salesforce record I’m changing. Upsert says use this key to find out whether the record exists; update it if it does, create it if it doesn’t. With stable External IDs, upsert makes rehearsals far easier: load, find a transformation problem, fix it, rerun, without the run assuming everything is a first-time insert. Keys are architecture, not just integration plumbing. RouteDesk’s Work Orders upsert on the partner key, the same field the integration uses, so a manifest Redrock resends on cutover weekend updates the migrated record instead of duplicating it. ⟲
Upsert has a price, though. Salesforce’s own Large Data Volumes guide ranks the operations: “insert() is fastest, update() is next, and upsert() is next after that. If possible, also break upsert() into two operations: create() and update()” (Loading Data from the API (yeni sekmede açılır), checked 2026-10-27). How do you know which records are new and which already exist? The preparation data store knows, because it pulled down what Salesforce already has and keeps the IDs that came back (module 1). So the 190,000 delivered Work Orders that nothing in Salesforce has touched can go in as a plain insert, and only the open ones the integration may already have created need the upsert. ⟲
Two more lines from the same guide. Load clean data: “Errors in batches trigger single-row processing for that batch, and that processing heavily impacts performance.” That’s module 1 paying off at the loading dock. And when you update, “send only fields that have changed.” A reload that resends every field of 196,400 Work Orders does work nobody asked for. ⟲
Ama upsert sihir değildir. Anahtar stratejisi yanlışsa işlem yanlıştır. Aynı müşteri için farklı anahtarlara sahip iki kaynak kayıt, Salesforce için iki kayıttır; birkaç hedefi tanımlayabilen bir kaynak anahtar, kardinaliteyi yanlış anladığımız anlamına gelir. Modül 1’in kalite işi hâlâ önemlidir; bir API özelliği onun yerini tutmaz.
Test knowledge. Insert is the fastest operation, then update, then upsert; Salesforce suggests splitting an upsert into creates and updates where you can. Upsert needs an External ID, and it’s what makes reruns safe. Load clean data, because errors in a Bulk API batch push that batch into slow single-row processing, and send only the fields that changed. ⟲
Paralel Daha Hızlıdır, Ta Ki Olmayana Kadar
Bölüm başlığı “Paralel Daha Hızlıdır, Ta Ki Olmayana Kadar ”Paralel işleme verimi artırır. Ama yüklemedeki birçok kayıt aynı üst kayda işaret ediyorsa, işlemler o üst kayıttaki kilitler için çekişir ve hızlanmak için yaptığımız şey kilit çekişmesi, hatalar ve yeniden denemeler yaratır. Bu yine 7. bölümün sıcak noktaları: bir milyon alt kayıt birkaç üst kayıtta birleşiyorsa, verinin biçimi yükleme için önemlidir. İki toplu işin her biri diğerinin tuttuğu bir kilidi beklediğinde bir kilitlenme (deadlock) elde edersiniz; bir kavşakta sıkışmış iki araba.
RouteDesk is exactly that shape. Almost 196,400 Work Orders, and nearly every one points at one of three Retail Partner Accounts. Load them in parallel in the order RouteDesk exported them, and every batch holds Work Orders for all three partners. ⟲
In export order, every batch needs every parent. One locks, the others wait. ⟲
Two levers. First, sort the files by parent, so the children of one parent travel together in the same batch instead of being spread across batches that collide. Salesforce gives the same advice: “When changing child records, group them by parent—group records by the field ParentId in the same batch to minimize locking conflicts” (Loading Data from the API (yeni sekmede açılır), checked 2026-10-27). ⟲
Sorted by partner, each batch works on its own parent. ⟲
Second, on Bulk API 1.0, serial mode processes one batch at a time: slower, but it removes the contention. I reach for serial mode when the data is complex and we’re running into collisions and timeouts. Salesforce’s own guide is more cautious: serial mode “is used only when previously submitted asynchronous jobs have accidentally produced contention because of locks. Use only when advised by Salesforce” (Limits (yeni sekmede açılır), Bulk API 2.0 and Bulk API Developer Guide, checked 2026-10-27). So sort first, and treat serial as the fallback. And it’s only on the older dock: Bulk API 2.0’s job reference says “Currently only parallel mode is supported,” and if other modes ever arrive, “the mode will be chosen automatically by the API and will not be user configurable” (Create a Job (yeni sekmede açılır), Bulk API 2.0, checked 2026-10-27). A load that needs serial processing is a reason to use Bulk API 1.0. ⟲
Serial mode is a setting on the job, chosen when you create it. On Bulk API 1.0, RouteDesk’s Work Orders would be: ⟲
POST /services/async/68.0/job{ "operation": "upsert", "object": "WorkOrder", "externalIdFieldName": "Partner_Delivery_Key__c", "contentType": "CSV", "concurrencyMode": "Serial"}Leave concurrencyMode out and you get Parallel, the default. Salesforce’s job reference says when to change it: “If parallel mode results in too many failed records or failed jobs, submit the job with Serial concurrency mode,” and adds that it “can significantly increase the processing time” (JobInfo (yeni sekmede açılır), Bulk API 2.0 and Bulk API Developer Guide, checked 2026-10-31). ⟲
And if three parents are too few for any sorting to help, look at the model. Checkpoint 1 already offered a way to spread them: link Work Orders to a child Account per distribution center, so nine parents share the load instead of three. That’s a design decision, made before the migration, not a loader setting. ⟲
“Her zaman paralel” veya “her zaman seri” ile başlamam. İlişki biçimine, sıcak üst kayıtlara, çalışan otomasyona, başka neyin kilitlediğine ve provada ne olduğuna bakarım. Sonra seçerim. Önce doğru, sonra hızlı.
Test knowledge. Parallel loads lock parent records. When many children share a few parents, expect “unable to lock row” errors: sort the load file by parent so each batch touches as few parents as possible. Serial mode (Bulk API 1.0 only) removes the contention at the cost of speed; Salesforce reserves it for lock contention the sorting didn’t solve. ⟲
Toplu İş Boyutu Bir Ayar Kararıdır
Bölüm başlığı “Toplu İş Boyutu Bir Ayar Kararıdır ”İnsanlar sihirli bir sayı ister. Bende yok. Doğru boyut nesneye, kayıt karmaşıklığına, otomasyona, ilişkilere, kilitlemeye, yüke ve mekanizmaya bağlıdır. Çok büyükse hatalar pahalılaşır ve işlemler çok fazla iş yapar; çok küçükse ek yük baskın çıkar ve çalışma olması gerekenden çok daha uzun sürer (1.0’da ayrıca toplu iş hakkınızı tüketir). Aracın desteklediği sınırların içinden başlayın, sonra temsili veriyle ölçün.
And the rehearsal data needs the same shape as production. Twenty million records in production, ten thousand in the test, and everything flies: what did we prove? Not much about scale. The test doesn’t need every record, but it must expose the architecture: heavy concentration on a few parents, millions of children, large text fields, complex relationships, historical skew, automation triggered by particular values. The Number of Zeros matters, and so does the shape behind the zeros. For RouteDesk that means a rehearsal set where a third of the Work Orders still point at Redrock. ⟲
Yükleme Kullanıcısı ve Kayıtların Sahibi
Bölüm başlığı “Yükleme Kullanıcısı ve Kayıtların Sahibi ”For a substantial migration I want a dedicated migration identity, not someone’s personal admin account: for traceability, controlled permissions, automation decisions (module 3), monitoring and troubleshooting. A million records created by the migration user during cutover tells me something. A million created by Daniel Reyes because Daniel ran Data Loader on Saturday night mixes human identity with system activity. Give it the permissions the job needs, and don’t let it become a permanent mystery superuser nobody dares disable. ⟲
Then don’t confuse who loaded a record with who should own it. Created By is provenance; Owner is architecture, with sharing and business consequences. Set business ownership deliberately. Sometimes there’s no good answer in the source: the record’s owner left years ago, or never existed. It can be hard to assign records to active users, and I’ve created a dedicated “data load” user to own them. That’s sound practice with one condition from chapter 7: a user who owns more than 10,000 records of an object is ownership skew, so that owner should have no role, or a role of its own at the top of the hierarchy (Ownership Data Skew (yeni sekmede açılır)), and the records should have a path to real owners. Who owns the records, and where that owner sits in the role hierarchy, is an important decision the team makes for any bulk import, not something the loader defaults. For RouteDesk’s Work Orders, chapter 7’s question decides it: does ownership drive who sees a delivery? At Steve Trucking it doesn’t (partners see their own deliveries through the partner on the record), so one owner with no role is fine. ⟲
Araçlar: Tekrarlanabilirlik İçin Seçin
Bölüm başlığı “Araçlar: Tekrarlanabilirlik İçin Seçin ”There are many ways to load data, and the tool matters less than how you use it. Salesforce’s Data Loader has been tried and true, but it’s aged: a desktop tool that works CSV by CSV. Its command-line version can be scripted and pointed at your preparation data store, which is how I’ve run repeated loads. Some tools connect a SQL database straight to Salesforce, copying data down and sending changes back with SQL. ETL and integration platforms do the same job at enterprise scale. And with the APIs you can drive the Bulk API directly: the Salesforce CLI’s sf data upsert bulk loads a CSV through Bulk API 2.0 with an External ID from one command (data upsert bulk (yeni sekmede açılır), Salesforce CLI Command Reference, checked 2026-10-27). You can even have AI write the small scripts that run each complex step. ⟲
Araç ne olursa olsun, en güçlü tercihim şu: üretim taşımasının taşımayı ilk kez yaptığımız an olmasını istemem ve her provanın el yapımı bir macera olmasını istemem. 17. adım “bu CSV’yi aç, G sütununa göre sırala, boş satırları sil, bu formülü aşağı kopyala, sonra Data Loader’ı bu ayarlarla çalıştır” diyorsa tedirgin olurum. Her elle yapılan adım yanlış bir dosya, atlanan bir satır, bayat bir sürüm, kötü bir sıralama, unutulan bir filtre, provadan farklı bir ayar için bir fırsattır. Bazıları kaçınılmaz olabilir: belgeleyin ve test edin. Ama amaç tekrarlanabilirliktir; bu yüzden çıkarma, dönüştürme, doğrulama, yükleme, sonuçları toplama ve uzlaştırma her seferinde aynı şekilde çalışmalıdır.
Yüklemeleri zamanlıyorsanız, bitirebileceklerinden daha sık zamanlamayın. Bazen doksan dakika süren saatlik bir iş kendi üstüne başlar; bir sonraki başlamadan önce öncekinin tamamlandığını kontrol edin.
Keep Every Result, and Bring the Keys Back
Bölüm başlığı “Keep Every Result, and Bring the Keys Back”Her yükleme için girdi sürümünü, dönüştürülmüş yükleme dosyasını, iş kimliğini, hatalarıyla birlikte başarı ve hata sonuçlarını, zamanlamayı, kayıt sayılarını ve uzlaştırma çıktılarını saklayın. Büyük bir taşımadan sonra biri “bu kayda ne oldu?” diye soracak ve “sanırım o cumartesi sabahı üçüncü CSV’deydi” değil, kanıt isterim. Toplu sonuçlar yalnızca yedi gün saklanır, bu yüzden ilerledikçe indirin. Bu eserlere daha sonra bir yaşam döngüsü verin; taşımayı kanıtlamaya hâlâ ihtiyacınız varken onları atmayın.
Then bring the keys back. The success results carry each record’s new Salesforce ID next to the key you sent. Write them back into the preparation data store, on the row that produced the record: that’s the last frame of module 1’s three sets of keys. On the Zendesk migration I described in module 1, that’s what made everything else possible. With the Salesforce IDs back on every row, I could load in phases (accounts and contacts first, then the cases, then the comments and files that hang off them), and each phase found its parents by the IDs the last one returned. I could do a partial load: just the rows that failed, or just one group. And I could reload: fix a transformation, regenerate the affected rows, and send only those, knowing exactly which Salesforce records they’d update. Without the keys back, every rerun is a guess. ⟲
Hata boyutu da bir Sıfır Sayısı sorusudur. 100’de yirmi hata kötüdür; 20 milyonda yirmi hata yine incelenmeli ama farklı bir sinyaldir. Yalnızca sayıları değil oranları izleyin ve hataları sınıflandırın: doğrulama, eksik üst kayıt, yinelenen anahtar, kilitleme, veri türü, otomasyon, izinler. Sınıflandırıldıklarında size dev bir hata dosyası yerine mimari sorunları gösterirler.
Ve performans saniyedeki kayıt sayısından fazlasıdır. “Verimi ikiye katladık.” Ne değişti? Kilitleme, hatalar veya yeniden denemeler arttı mı? Aşağı akıştaki otomasyon geride mi kaldı, paylaşımın yeniden hesaplanması mı birikti, başka bir entegrasyon mu boğuldu? Toplam geçiş gerçekten kısaldı mı? Bir taşıma boşlukta çalışmaz.
Test knowledge. The Bulk API’s success results return each record’s new Salesforce ID with the data you sent, and its failure results return each error; both are kept for seven days. Capture them, write the IDs back to the source or staging data, and you can load in phases, retry only the failures, and reconcile what landed. ⟲
Tüm Akışı Test Edin
Bölüm başlığı “Tüm Akışı Test Edin ”Hesapları, sonra ilgili kişileri, sonra siparişleri yüklemek ve her birini ayrı test etmek test edilmiş bir taşıma değildir. Baştan sona, aynı sıra, dönüşümler, kimlikler, otomasyon stratejisi ve uzlaştırmayla, temsili hacimde tam bir prova isterim. Bağımlılıklar adımlar arasında ortaya çıkar: on dakikalık bir gecikme sonraki yüklemeyi yanlış zamanda başlatır, beklenmedik bir hata oranı saatlerce düzeltmeye mal olur, bir paylaşım yeniden hesaplaması programı kaydırır. Tam akış size yalnızca her komutun değil, taşımanın çalışıp çalışmadığını söyler.
If the rehearsal includes a performance or scale test, put Salesforce’s lead time in the plan. “All tests must be pre-approved. Unapproved testing is subject to throttling or blocking,” and for tests at 120 requests a second or below, the request goes in “at least one week before the testing date” (Salesforce Performance and Scale Test FAQs (yeni sekmede açılır), Salesforce Help, checked 2026-10-27). A rehearsal that gets throttled proves nothing about cutover weekend. ⟲
Betiği Yapay Zekâ Yazabilir. Çalıştırmanın Sorumluluğu Yine Sizde.
Bölüm başlığı “Betiği Yapay Zekâ Yazabilir. Çalıştırmanın Sorumluluğu Yine Sizde. ”AI is very good at generating transformation scripts, load orchestration, error parsers, reconciliation queries and retry logic. Use it. But generated code can be wrong at enormous speed: a wrong transformation on ten records is ten fixes; on ten million, the Number of Zeros applies to the mistake too. The way I use it is step by step: clean, transform and migrate steps, with every generated command and action tracked. That’s deterministic, auditable automation, not unattended judgment. Test it at realistic scale before you trust it with production data. ⟲
Sınavın ötesinde: yapay zekânın değiştirdikleri. Yapay zekâ taşıma araçları kurma çabasını azaltır ve toplu işlemleri hızla üretip çalıştırmayı kolaylaştırır. İşlem ne kadar büyükse deterministik dönüşümlere, izlenen adımlara, provalara, kontrollere ve uzlaştırmaya ihtiyaç o kadar güçlüdür.
Mimarın Burada Karar Verdikleri
Bölüm başlığı “Mimarın Burada Karar Verdikleri ”- Bir taşımayı işlemsel trafik gibi ele almak yerine, işin hacmine ve biçimine hangi yükleme mekanizmasının ve API sürümünün uyduğu.
- Nesnelerin ve ilişkilerin bağımlılık güdümlü sırası; kayıtların ve ilişkilerin ne zaman ayrı geçişlere ihtiyaç duyduğu dahil.
- Which operation each set of records gets (insert, update or upsert), based on what the preparation data store knows already exists. ⟲
- Where parallel processing is safe, and where concentration, locking or automation justify sorting by parent, a model change, or serial processing. ⟲
- Hangi kararlı anahtarların, taşıma kimliğinin, kayıt sahipliğinin ve tekrarlanabilir araçların provaları ve üretim yüklemelerini deterministik kıldığı.
- How results and new IDs come back, so loads can run in phases, retry only failures, and reload safely. ⟲
- Sürece üretim ölçeğinde güvenmeden önce hangi kanıtın, hata sınıflandırmasının ve tam akış provasının gerektiği.
Yükleme Rampasının Yine de Bir Plana İhtiyacı Var
Bölüm başlığı “Yükleme Rampasının Yine de Bir Plana İhtiyacı Var ”The loading dock moves enormous amounts of data. It doesn’t decide which truck unloads first, where the pallets go, which shipment belongs to which customer, what happens to a damaged pallet, whether two forklifts are using the same aisle, or whether everything that should have arrived did. That’s architecture. Know the Number of Zeros and the shape behind them. Load in dependency order, use stable keys, control concurrency, bring the keys back, make the process repeatable, keep the evidence, and rehearse the whole thing. Then use the loading dock as fast as the architecture safely allows. ⟲
Daha Fazlası
Bölüm başlığı “Daha Fazlası ”- Salesforce, Bulk API and Bulk API 2.0 Limits and Allocations (yeni sekmede açılır), Developer Limits and Allocations Quick Reference, checked 2026-11-01. ⟲
- Salesforce, General Guidelines for Data Loads (yeni sekmede açılır) and Limits (yeni sekmede açılır), Bulk API 2.0 and Bulk API Developer Guide, checked 2026-11-01. ⟲
- Salesforce, Best Practices for Deployments with Large Data Volumes, Loading Data from the API (yeni sekmede açılır), Winter ‘27, checked 2026-11-01. ⟲
- Salesforce, REST API Developer Guide, Create Records Using sObject Collections (yeni sekmede açılır), checked 2026-11-01. ⟲
- Salesforce, SOAP API Developer Guide, create() (yeni sekmede açılır), and Bulk API 2.0, Create a Job (yeni sekmede açılır), checked 2026-11-01. ⟲
- Salesforce, Bulk API 2.0 and Bulk API Developer Guide, JobInfo (yeni sekmede açılır) (the Bulk API 1.0 job fields,
concurrencyMode), API version 68.0 (Winter ‘27), checked 2026-11-01. ⟲ - Salesforce Help, Salesforce Performance and Scale Test FAQs (yeni sekmede açılır), checked 2026-11-01. ⟲
- Integration Architect kursu: Bulk (coming soon) bölümü Bulk API’yi derinlemesine ele alır.
- Bu kursta: Ölçek İçin Tasarlamak (sıcak noktalar ve sahiplik çarpıklığı).
- Salesforce Developers, Designing Record Access for Enterprise Scale, Ownership Data Skew (yeni sekmede açılır), checked 2026-11-01. ⟲
- Salesforce Developers, Salesforce CLI Command Reference, data upsert bulk (yeni sekmede açılır), checked 2026-11-01. ⟲
