HAQL nedir?
2022’de bir zorlukla karşı karşıyaydık: Müşterilerimiz için kullanışlı, eyleme dönüştürülebilir kontrol panelleri oluşturmak ve bunları hızlı bir şekilde oluşturmak istiyorduk. Verilerimiz vardı, bağlamımız vardı ve tasarımlarımız vardı ancak her ek veri görselleştirmesi için veri karıştırma sürecini ölçeklendirmenin bir yolunu kaçırıyorduk. Yardımcı sınıflar oluşturduk, DRY’ledik ve kodu soyutladık, ancak yine de kendimizi hataya açık ve hata ayıklaması zor, opak Arel sorguları yazarken çıkmaza girmiş halde bulduk. Bunun da ötesinde, karmaşık bir veritabanı yetkilendirme katmanında gezinirken performansı optimize etmeye çalışmak, yükleme süreleri ile güvenlik arasında zor seçimlere yol açtı.
HAQL’e girin. Her sorguyu ActiveRecord, Arel veya riskli ham SQL bloklarında tanımlamakla uğraşmak yerine neden arayüzü basitleştirip hızlı bir analitik sorgu motorunun belirli ihtiyaçlarına odaklanmıyorsunuz? HAQL özünde tam da budur: veri analizi için özel olarak modellenen tablolar üzerinde performanslı toplu sorgular yazmak için basitleştirilmiş bir sorgu arayüzü.
Arka uçta HAQL, belirli bir girişten Arel düğümleri oluşturan ve mevcut şema, yetkilendirme, veritabanı işlevleri, veri türleri, çıktı formatları, veritabanı bağlantıları, satır sınırları, hata yönetimi ve güvenlik özellikleri üzerinde ayrıntılı kontrol sağlayan bir Ruby sınıfından oluşur. Daha.
Sorgu girişlerinin kendileri oldukça yapılandırılmış ve kesin bir şekilde yazılmıştır; bu da kötü amaçlı yüklerin doğrulanmasını ve erişim kontrollerinin uygulanmasını kolaylaştırır. Orijinal kullanım durumumuz için en önemlisi, yapılandırılmış girdiler ve çıktılar bize hızlı bir şekilde yeni gösterge tabloları oluşturma olanağı sağlıyor.
En yaygın veri görselleştirmelerimizin tümü için ön uçta yeniden kullanılabilir React bileşenleri yazmak amacıyla bu HAQL yanıt sözleşmesinden yararlandık; artık bir grafik bir konfigürasyon haline geliyor ve yeni bir kontrol paneli oluşturmak az kodlu bir aktivite haline geliyor.
Peki nasıl çalışıyor?
HAQL Sorgusunun Anatomisi
Bir HAQL sorgusu, bir SQL sorgusunun tanıdık bileşenlerinin çoğuna sahiptir: gerekli bir select ifadesinin yanı sıra isteğe bağlı Where yüklemleri, join ifadeleri, spesifikasyonlara göre sıralama ve limit direktifleri. Sorgular genellikle GraphQL aracılığıyla yürütülür ancak açıkça JSON olarak da tanımlanabilir. Bir örneğe bakalım.
Bu sorguyla, select ifadesinde varlıklara göre gruplandırılmış ödüllerin toplamını alıyoruz. Birleştirme bildirimindeki varlıklar tablosunu ödül tablosuna bağlarız ve bir dizi yüklem aracılığıyla birleştirme koşullarını belirleriz. Son olarak, sonuçları toplanan ödül miktarına göre sıralıyoruz.
Rails arka ucumuzun perde arkasında, her sorgu bileşeni ayrıştırılır, doğrulanır ve bir Arel sorgusunda bir düğüm olarak birleştirilir. Bu noktada, uygunsuz erişime karşı yetkilendirme koşullarını ve diğer önlemleri de uyguluyoruz. Sonuçlar daha sonra GraphQL ile uyumlu bir anahtar/değer biçiminde döndürülür.
PostgreSQL’de yukarıdaki sorgu şu anlama gelir:
Basit bir arayüze sahip olmasına rağmen HAQL oldukça karmaşık sorgulara izin verir. Yeniden kullanılabilir ön uç bileşenleri ve ilgili sorguların gruplandırılmasına yönelik iyi tanımlanmış kalıplarla birlikte HAQL’in, tipik kullanım örneklerinde yeni bir kontrol paneli oluşturma süresini haftalardan saatlere indirdiğini gördük.
Katalizörlere Yatırım Yapmak
Mühendislik dünyasında, küçük iyileştirmelerin başlangıçtaki sorunu büyük ölçüde aşan yankılara sahip olduğu durum sıklıkla karşılaşılan bir durumdur. Bu kuvvet çarpanlarını keşfetmek bilimden çok sanattır, ancak HAQL ile çoğu tamamen beklenmedik olan çok sayıda uygulamanın olduğunu neredeyse anında öğrendik.
HAQL için en heyecan verici fırsatlardan biri HackerOne’ın yapay zeka yardımcı pilotu Hai ile olan ilişkisidir. HAQL’in şeması doğal olarak bilgi açısından yoğun ve oldukça yapılandırılmıştır; Hai’nin dili geleneksel Geri Alma Artırılmış Üretim (RAG) teknikleri yoluyla öğrenmesini kolaylaştırır ve Hai’nin bir aracı olarak verileri gerçek zamanlı olarak getirmesine, analiz etmesine ve işlemesine olanak tanır.
Bu analitik sorgu katmanı olmasaydı, Hai geliştiricilerimizin bir LLM’den oluşturulan SQL’i koaksiyel hale getirmek için veri erişim kurallarını ve şematik bağlamı el ile düzenlemeleri gerekecekti, doğrulama için ayrıştırıcılar yazmaları gerekecekti ve bu durum onları zorlayacaktı. Çeşitli yanıt formatlarını işlemek için karmaşık mantığı uygulamak. Bunun yerine, LLM’nin sistem istemine nispeten basit bir ekleme, güçlü ve yeni bir işlevselliğin kilidini açar: HackerOne platformunda bağlama duyarlı, sohbet tabanlı içgörüler.
Ek bir avantaj olarak, basit ama katı yetkilendirme kuralları, Hai’nin HAQL sorgularını güvenli bir şekilde yürütme becerisine daha fazla güvenmemizi sağlar ve zengin meta veriler desteği, LLM’leri başka türlü mümkün olamayacak olan daha güvenilir sorgulara doğru “yönlendirmemize” olanak tanır.
Sınırlamalar
Oluşturma, satın alma ve açık kaynak arasındaki asırlık dengede, HAQL bir istisna değildir. Bu sorunu çözmemize yardımcı olabilecek başka araçlar var mı? Elbette. Rails uygulamasında kendi geliştirdiği özel bir sorgu motorunu yönetmenin dezavantajları var mı? Kesinlikle. Henüz ortaya çıkarmadığımız bilinmeyen riskler var mı? Kesinlikle.
Ayrıntılı sözdizimi ilk başta deneyimli SQL kullanıcıları için elverişsiz gelebilir ve alt sorgular, CTE’ler, birleşimler ve benzerleri gibi daha karmaşık işlemler için HAQL (henüz) en iyi seçenek değildir. Ancak doğru iş için her zaman doğru araç vardır ve HackerOne’da HAQL, araç kutusunda bulunması gereken güçlü bir araçtır.
İleriye dönük
Gelecekte HAQL’in kontrol panellerini güçlendirmenin çok ötesine geçen kullanımlara sahip olmasını bekliyoruz. Zaten bir avuç REST API uç noktasını etkinleştiriyor ve gelecekte muhtemelen doğrudan API aracılığıyla sorgulanabilecek. HAQL şemasında mevcut olan veri kümelerinin sayısı da HackerOne’ın ürün paketinin daha büyük bir payını kapsayacak şekilde istikrarlı bir şekilde artıyor. Son olarak, verileri yüzeye çıkarmanın ve verilerle etkileşime geçmenin yaratıcı yeni yollarını keşfettikçe, Hai ile entegrasyonun ek ürün ve mühendislik yatırımlarını çekeceği kesindir.
Biz sadece bu yeteneklerin giderek büyüyeceğini tahmin ediyoruz. çok Bir bütün olarak siber güvenlik ve teknoloji için heyecan verici bir zaman.