Modern bir arama motoru oluşturmak, tüm web'i içeri almak ve gerçek zamanlı değişikliklere rağmen sorgulanabilir olmasını sağlamak gibi önemli zorluklar içerir. Web'in doğası gereği bu süreç karmaşıktır: her sayfa metin, metadata ve embedding gibi onlarca farklı çıktı üretir; HTML, PDF, JavaScript uygulamaları gibi heterojen içerikler farklı ayrıştırma gereksinimlerine sahiptir; haberler saatlik değişirken akademik makaleler hiç değişmeyebilir; ve yüz milyarlarca sayfa, petabaytlarca ham içerik gibi muazzam bir hacim söz konusudur. Bu dinamik yapı, arama motoru indeksinin güncel kalması için sayfaların sürekli taranmasını, yeniden işlenmesini ve embedding'lerin sorgudan önce yeniden oluşturulmasını gerektirir. Her değişiklik, bağımlılıkları ve güncelleme mantığı olan türetilmiş özelliklerin (embedding'ler, çıkarılan metinler, metadata) karmaşık bir zincirini tetikler.
Exa, bu ölçekteki karmaşıklığı yönetmek için kendi bünyesinde geliştirdiği veri işleme framework'ü olan exa-d'yi kullanıyor. Geleneksel veri yönetimi yaklaşımlarını (veri ambarları, SQL dönüşüm katmanları, orchestrator'lar) değerlendirdikten sonra, belirli önceliklere göre optimize edilmiş kendi framework'lerini oluşturmaya karar verdiler. exa-d'nin temel tasarım ilkelerinden biri, mühendislerin veriler arasındaki ilişkileri bildirimsel olarak tanımlamasıdır, yani güncelleme adımlarını değil. Bu, bir elektronik tablodaki formüllerin diğer hücrelere referans vermesine benzetilebilir; mühendisler formüllerinin doğruluğuna odaklanırken, framework durum yönetimi, yeniden denemeler ve zamanlama gibi diğer endişeleri üstlenir. Bu bildirimsel yaklaşım aynı zamanda sütunların ve ilişkilerinin sıkı bir şekilde tip tanımlı olmasını sağlayarak, geçersiz dönüşümlerin kod yazılırken hemen tespit edilmesine olanak tanır.
exa-d, geliştirici ergonomisini ön planda tutarak, yapılar arasındaki bağımlılık grafiğini bildirmeyi ve yürütmeyi otomatik olarak ele almayı hedefler. Ayrıca, web içeriğinin dinamik yapısı ve hızlı iterasyon ihtiyacı, verilerin sadece statik kayıtlar olarak depolanamayacağı, aynı zamanda birçok esnek güncelleme ve eklemeyi desteklemesi gerektiği anlamına gelir. exa-d, web'in bazı bölümlerinin günlük veya saatlik güncellenmesi gerektiğinde indeksin küçük bölümlerinin hassas bir şekilde değiştirilmesine olanak tanır. Bir güncelleme pipeline'ında bir hata oluştuğunda, yalnızca etkilenen satırların düzeltilmesi hedeflenir, bu da tam yeniden oluşturma maliyetinden kaçınmayı sağlar.
Exa'nın exa-d framework'ü, web'in devasa ve dinamik yapısını S3 üzerinde etkin bir şekilde depolayarak ve işleyerek modern arama motorlarının gerçek zamanlı güncelliğini ve sorgulanabilirliğini sağlıyor.