Scalable Data Modelleri Neden Mühendislik Büyümesini Tanımlıyor

Bir dizi başarılı bir şekilde paylaşılan mühendislik şirketleri ortak bir özelliği paylaşıyor: veri altyapısı, onlara karşı değil, bir takım için çalışan bir veri modeli ile, birkaç terabayt verinin baskı altında yüzlerce mühendisin, milyonlarca cihaz ve petabay- ölçekli iş yüklerinin baskısı altında kırılacak.

Scalable veri modelleri sadece bir veritabanında daha fazla satır işlemekle ilgili değildir.Sürekli sorgu yanıt süreleri korumak, koncurrent yazar altında veri bütünlüğü korumak ve tüm depolama katmanını yeniden yazmaksızın yeni özellikler eklemek için ekipler izin vermekle ilgilidir. mühendislik işletmeler için, veri her şeyi gerçek zamanlı izlemeye yönlendirir, kötü tasarlanmış bir model tüm organizasyonun tamamını yavaşlatan bir şişenck olur.

Ölçekli bir model inşa etmek, her iş yükü için doğru veritabanı teknolojisini nasıl seçmek gerekir. Bu makale, işletmeleriyle büyüyen veri modellerini tasarlamak için gerekli olan ilkeleri, stratejileri ve gerçek dünya uygulamalarını bilmek gerekir.

Data Model Scalability

Veri modellerinde erişilebilirlik, veri hacmini, kullanıcı yükünü ve tam bir yeniden tasarım olmadan karmaşıklığı işlemek için kapasitedir. Bu, bir sistemin mükemmelleştirilmesine izin veren tek bir özellik değildir.

Ölçeklenebilirliğin iki temel boyutu vardır:

  • [FONT=0)Horizontal ölçekleme (scaling out):[Dönetici:[Dönetici:0) Yük dağıtmak için daha fazla sunucu veya düğüm ekinler ekin.NoSQL databases like Cassandra and MongoDB is designed for this, but relationshipal databases can also scale yatayly with techniques like sharding.
  • [FONT:0)Vertical ölçekleme (scaling):[Dönetici: [Dönetici: 1) Daha fazla CPU, RAM veya daha hızlı depolama ekleyerek tek bir sunucu kapasitesinin artırılması. Bu daha basit ama zor sınırları vardır ve ölçeklenebilir.

Çoğu mühendislik işletmelerinin her ikisini de tasarlaması gerekir, böylece ihtiyaç duyduğunda yatay ölçeklendirmeden yararlanabilir, ancak gelişim ve test için tek bir düğüm üzerinde etkili olmakla birlikte.

Ölçekli bir veri modeli de erişim modelleri için hesaplar. İşlemsel iş yükleri için optimize edilmiş bir model (OLTP) analitik sorgular için optimize edilmiş bir (OLAP) için optimize edilmiş bir dizinde sıklıkla ihtiyaç vardır, bu yüzden birçok çok sayıda poliglot kalıcılık yaklaşımı benimsemesi gerekir: farklı kullanım koşulları için farklı veritabanı kullanarak.

Modelinizin Scale gerektirdiği zaman tanıma

Uyarı işaretleri, temel şemaya dokunmadan yeni özellikler eklemek için kullanılamaz. Mühendislik ekipleri bu sinyalleri sürekli olarak izlemeli ve yeniden faktörleme için tetiklenen, yalnızca üst üste düşen yük altında görünen ölüler ve temel şemaya dokunmadan yeni özellikler eklemeye muktedir olan inability, mevcut modelin tüm göstergeleridir.

Scalable Data Modeling

Aşağıdaki ilkeler herhangi bir ölçeklenebilir veri modelinin temelini oluştururlar, ancak sistemin belirli gereksinimlerine bağlı olarak birbirlerine karşı dengeli olması gereken kurallar değildir.

Normalleştirme Done Deliberately

Normalizasyon, verileri dış anahtarlarla bağlantılı ayrı masalara dahil ederek veri toplama ve yazma tutarlılığını azaltır.For İşlemsel sistemler için veri bütünlüğünün önemli olduğu, normalleştirilmiş bir model genellikle doğru başlangıç noktasıdır. Ancak, aşırı normalleştirme, yavaş okuma-heavy iş yüklerine yol açabilir.

pragmatik yaklaşım, ilk tasarım sırasında üçüncü normal form için normalize etmektir, sonra performans-kırık okuma yolları için seçici olarak silinir. Örneğin, bir mühendislik varlık yönetimi sisteminde, temel varlık verileri normalleştirilebilir, ancak varlık metadata ve son okumalar alt saniye yanıt süreleri gerektiren panolar için denormalleştirilebilir.

Performans Aracı Olarak Denormalizasyon

Denormalizasyon, katılmak ve hızlanan okumaları ortadan kaldırmak için kırmızıdanlık sağlar. Bu, içerik platformları, gerçek zamanlı panjurlar ve raporlama motorları gibi, geçerli bir stratejidir.

Modern veritabanı, bu ticaretten sorumlu verileri tutarlı tutmaya yardımcı olan tüm yardımların normalleştirilmesine yardımcı olur. Temel mantıken ve uzlaşma stratejisini belgelemektir.

Yönetilebilirlik için Katılımcılık

Büyük tabloları bölme anahtarına dayanan daha küçük, daha yönetilebilir parçalara ayırarak sorgu performansını geliştirir ve veritabanının yalnızca ilgili bölümlere taramasına izin verir ve eski veriler gibi bakım işlemleri basitleştirir.

Zaman tabanlı bölümler zaman serisi verileri için yaygındır, örneğin sensör okumaları veya loglar. Liste bölmesi, bölge veya ürün hattı gibi kategori tarafından gruplandırılabilecek veriler için iyi çalışır. Sayısal anahtar tarafından bölmek, bölümlerdeki verileri dağıtmak için bile kullanışlıdır.

İyi tasarlanmış bir bölüm stratejisi, tam zamanlı taramalar için ihtiyacını azaltır ve indeksleri küçük tutar. Ayrıca, pencere arşivlemesini sağlar: pahalı silme işlemleri yerine eski bölümlere düşmeyi sağlar.

Amaç ile Indexing with Purpose

Indexler, veri geri dönüşlerini hızlandırmanın en doğrudan yoludur, ancak bir maliyetle gelirler.Her indeks, işlemleri yazmak ve depolamak için ek ekler. Hedef gerçek sorgu kalıpları için indeksleme, filtrelenen her sütun için değil.

Mühendislik işletmelerinde, sık sık filtrelenen sütunlarda kompozit indeksler genellikle en büyük performans kazanımlar sağlar. Sadece alt sıraların alt kümesini kapsayan Katılımcı indeksleri, belirli statüleri veya tarih aralıkları hedef alan sorgu kalıpları için faydalıdır. Index-sadece taramalar, indeksler tüm sütunları bir sorgu tarafından gerekli olan, masa erişimini tamamen ortadan kaldırabilir.

Database monitoring tools likeETHFLT:0)PostgreSQL'in pg stat statements) veya [[Dönetici:2) BenimSQL'in yavaş sorgu log) hangi indekslerin kullanıldığını ve hangilerinin kilo verdiğini tanımlamaya yardımcı olur.

Doğru Veritabanı Teknolojisi Seçin

Tek veritabanı her şeyde başarır.Relational databases likeETHFLT:0)PostgreSQL) ve Natasha güçlü tutarlılık, ACID işlemleri ve MongoDB gibi hiçbirSQL veritabanı sunar.

Mühendislik işletmelerinin bir veritabanına taahhüt etmeden önce iş yüklerini değerlendirmeleri gerekir. Veriler karmaşık ilişkilere sahiptir ve işlemsel bütünlüğü gerektirirse, bir ilişki veritabanı en belirgin seçimdir.Eğer veriler büyük ölçüde yapılandırılır ve büyük ölçekli okumanız gerekir, NoSQL veritabanı her ikisini de çalıştırabilir.

Sürdürülebilir Büyüme için Tasarım Stratejileri

Tek başına yeterli değildir. Büyümeyi ve barındırmayı öngören bir tasarım sürecine gömülmeleri gerekir. Aşağıdaki stratejiler, mühendislik ekiplerinin organizasyon ölçekleri kadar sağlam kaldığı veri modelleri oluşturmalarına yardımcı olur.

modüler Schema Design

Her masanın her masaya referansları olan monolithic şeması, bir şeyi bozmadan değiştirmek imkansızdır. modüler tasarım, verileri sınırlı bağlamlara düzenler, diğer bağlamlarla iletişim kuran kendi şemalarıyla birlikte, iyi tanımlanmış arayüzlerle iletişim kurar.

Bu yaklaşım, alan odaklı tasarımdan ödünç alınan ekipler sistemin bir parçasını bağımsız olarak geliştirmelerine izin verir. Örneğin, fatura hizmetini etkilemeden iç şemasını değiştirebilir, aralarında API sözleşmesini azaltır ve gelişimlerini hızlandırır.

API-First Data Access

Uygulamalardan doğrudan veritabanı, sıkı darbe ve brittle sistemleri için bir reçetedir. Mühendislik işletmelerinin temel modeli soyutlayan API'ler aracılığıyla verileri açığa çıkarması gerekir. Bu, veri katmanının yeniden faktörlenebilmesine, bölmeye veya hatta tüketicileri etkilemeden değiştirilmesine izin verir.

GraphQL, REST ve gRPC tüm kontrol edilen veri erişimi için mekanizmaları sağlar. API katmanı, veri düzeyinde uygulanması zor olacak şekilde kalibre edilebilir ve sorgu optimizasyonu uygulayabilir. Ayrıca poliglot devam eder: API'nin arkasındaki farklı veritabanı uygulamaları için bir arayüz sunabilir.

Data Archiving and Lifecycle Management

Tüm veriler hemen erişilebilir olmalıdır. Nadiren queried olan tarihsel veriler daha ucuz depolamaya taşınabilir, birincil veritabanına yükleri azaltır ve maliyetleri azaltır. İyi tanımlanmış bir veri yaşam döngüsü politikası, veri arşivlendiği zaman nasıl depolanır ve nasıl elde edilebilir.

Birçok mühendislik firması, hızlı SSD'lerde sıcak veriler, S3 gibi nesne depolamada sıcak veriler ve PostgreSQL'in masa bölmesi gibi araç yedekleri otomatik olarak nesne depolamak için arşivleyebilir.

Sürekli İzleme ve Sorgu Optimizasyonu

Scalability bir zaman başarısı değildir. Performans, indeks kullanımı ve veritabanı sağlığı sorgulamaya devam etmek için devam eden dikkat gerektirir. Mühendislik takımları, yüzey yavaş sorguları, kilit içerik ve kaynak kullanımı ile veri tabanlarını enstrüman etmelidir.

Düzenli sorgu inceleme seansları, takımın en yavaş sorguları incelediği ve optimizasyonlara karar verdiği yerde, geliştirme döngüsünün bir parçası olmalıdır. Common optimizasyonlar eksik indeksler, verimli ortaklıklar ekleyip pahalı hesaplamaları toplu süreçlere taşımayı içerir. Zamanla, bu uygulama, veri modelinin altından ziyade iş yükü ile geliştiğini garanti eder.

Schema Versioning and Migrations

İş büyüdükçe, veri modelinin yeni alanları eklemesi gerekecek ve eski olanları ele alalım ve yeniden yapılandırma masaları normal evrimin bir parçasıdır. Schema sürümleme ve otomatik göç araçları bu süreci güvenli ve tekrarlanabilir hale getirir.

Flyway gibi araçlar Liquibase ve Alembic kontrol edilen bir sırayla göçler uygular, geri dönüş yetenekleri gibi.The key is to design migrations that are back-compatible: new columns should have defaults, old columns should belapreed slow, and database locks should be minimized during schema changes. Online şema change tools.[Döneticileri değiştir]

Vaka Çalışması: 10 ila 1000 Siteden bir Üretim Data System

Endüstriyel otomasyon ekipmanları üreten bir üretim şirketi tek bir fabrika sitesi ve bir PostgreSQL veritabanı envanter, üretim programları ve kalite ölçümleri ile başladı. İlk veri modeli, parçalar için masalar, toplantılar, iş siparişleri ve test sonuçları ile tamamen normalleştirildi.

Şirket 50 siteye genişlediği gibi, veritabanı milyarlarca sıraya büyüdü.Bir zamanlar milisaniyede tamamlandıktan sonra zamanlama başladı. Tüm sitelerdeki agred verileri en aza indirilmiş oldu. tek bir site için çalışan indeksleme stratejisi ölçeklendi.

İki yıl boyunca, mühendislik ekibi birincil hedef olarak ölçeklenebilirliği olan veri modelini yeniden ele aldı:

  • [FONT:0]Partitioning:[Dönetici:[Dönetici:0) En büyük tablolar site ID ve tarih tarafından bölümlere alındı.Her sitedeki veriler kendi bölümünde yaşadı, tek bir site için hızlı sorgular yaparak ve tüm bölümlerin bağımsız olarak arşivlenmesine izin verdi.
  • [FONT:0)Index optimizasyonu:[Döneticiler Gerçek sorgu kalıplarına dayanan yeniden inşa edildi. (site id, timestamp) her alanda tek bir kodlama indekslerini değiştirdi. Aktif çalışma siparişleri için Katılımcı indeksleri gereksiz indeks taramaları ortadan kaldırdı.
  • [FONT:0)Kaynaklar:[Döneticileri Okuyuyorlar:[Döneticileri okutuyorlar:[0) Raporlama sorguları, işlemsel iş yüklerini analitik olanlardan ayırıyor.
  • [FONT:0)Caching katmanı:[DÜDÜT:1] Kısmi erişimli veriler, örneğin bölüm katalogları ve makine konfigürasyonları gibi, Redis'de önbelleklenmiş, veritabanı yükünü% 40 azaltmıştır.
  • [FONT:0)Data Archiving:[[Dönetici: 1 ) 90 günden daha eski iş siparişleri, birincil veritabanını daha ucuz depolamaya, birincil veritabanını tutma konusunda ayrı bir arşiv veritabanına taşındı.

Şirket 1.000 siteye ulaştıktan sonra, sistem 50 milyondan fazla gönderildi, 50 milisaniye altında p95 sorgu süreleri ile günde 50 milyondan fazla yazardı. Orijinal veritabanı 50 TB'ye 500 GB'den fazla büyüdü, ancak yeniden faktörlenen veri modeli öngörülebilir bir şekilde performansa devam etti.

Bu durum, temel dersi gösteriyor: ölçeklenebilirlik daha sonra eklediğiniz bir özellik değil. Sistem büyüdükçe yeniden gözden geçirilmesi gereken bir tasarım kararları. Üretim şirketi başarılı oldu çünkü devam eden bir yatırım olarak veri modelini tedavi ettiler.

Ortak Pitfalls ve Them'dan Nasıl Kaçırmak

Katı bir veri modeli olmadan ölçeklendirmeye çalışan mühendislik şirketleri genellikle öngörülebilir tuzaklara düşer. Bu tuzakları erken tanımak, yeniden çalışma ve pahalı zaman zamanlarını kurtarabilir.

Okumada Over-normalizasyon -Heavy Systems

Normalleştirme, ilişkisel veritabanı tasarımında eğitilmiş geliştiriciler için bir reflekstir. Ancak, çok fazla sayıdaki yazının yazdığı sistemler için aşırı normalleşme, veri büyüdükçe daha yavaş hale gelen bir katılma sorguları yaratır.

Data Access Patterns'ları görmezden gelmek

Verilere nasıl ulaşılacağı konusunda tasarlanmış bir veri modeli, şemaları tasarlamadan önce birincil sorgu yollarını haritalamalı. Hangi sorguların alt saniye yanıt süreleri gerekir? Bu sütunlar her zaman birlikte erişilebilir mi?

Veritabanı Black Box olarak tedavi etmek

Modern veritabanı birçok konfigürasyon knobs ile karmaşık sistemlerdir. Varsayılan ayarların büyümeli bir mühendislik işletmesi için en uygun olduğunu varsayın. Bağlantı havuzu boyutları, buffer havuzu boyutları, yaz-ahead log ayarları ve vakum veya kompaktleştirme davranışları tüm ölçeklerini anlamak için yatırım yapmalıdır. Teams onları belirli iş yükleri için ayarlamalıdır.

Skipping Data Lifecycle Planlama

Veri, yaşam döngüsü için planlanmadıkça büyür. Bir arşivleme politikası olmadan, en iyi tasarlanmış veritabanı sonunda dolduracaktır. Mühendislik işletmelerinin her veri türü için saklama politikalarını tanımlaması, arşivleme sürecine otomatik olarak geri yüklemesi gerekir ve geri yükleme yolu düzenli olarak test etmelidir.

Sonuç: Sürekli Uygulama olarak Scalability

Bir ölçeklenebilir veri modeli oluşturmak tek zamanlı bir tasarım egzersiz değildir. Her iş için sürekli bir ölçüm, optimizasyon ve adapte olmak.Bu makalede belirtilen ilkeler ve stratejiler temel sağlar: kasıtlı olarak, normalleştirme, gerçek sorgular için bölüm ve doğru veritabanı seçin.

Bu uygulamaya yatırım yapan mühendislik şirketleri dayanıklı bir rekabetçi avantaj elde ediyor. Sistemleri hızlı ve güvenilirdir, hatta veri hacmi multiplies olarak bile. takımları depolama katmanını yeniden inşa etmeden yeni özellikler gönderebilirler.Ve onların veri altyapısı, bunun üzerinde bir kısıtlama yerine büyümenin bir olanak sağlar.

Ölçeklenebilirlik düşünmeye başlama zamanı, ihtiyacınız olandan öncedir. Yeni bir ürün için ilk şemayı tasarlayıp, zaten baskı altında olan bir sistem yeniden düzenlemeniz, ilkeler aynı. Onları sürekli olarak uygulayın, sonuçları izleyin ve iterate.