Uygulamanız için esasen geçerli, kısa vadeli bir veri deposu teknik kararı verdiğiniz anlaşılıyor - özel bir veri deposu yönetim aracı yazmayı seçtiniz.
Her iki yönde hareket etme seçenekleri ile bir süreklilik üzerinde oturuyorsunuz.
Uzun vadede, muhtemelen (neredeyse, ancak% 100 kesinlikle değil) başınızın belada olduğunu göreceksiniz ve mevcut veri deposu çözümlerini kullanmakta değişiklik yapmanız daha iyi olabilir. Başa çıkmanız gereken özel, çok yaygın, öngörülebilir performans sorunları vardır ve kendi araçlarınızı kullanmak yerine mevcut araçları kullanmaktan daha iyi olursunuz.
Uygulamanızın içine yerleştirilmiş ve doğrudan kullanılan (küçük) bir özel amaçlı veritabanı yazmışsınız gibi gözüküyor. Fiili disk yazmayı ve okumayı yönetmek ve kombinasyonu veri deposu olarak değerlendirmek için bir işletim sistemine ve dosya sistemine güvendiğinizi farz ediyorum.
Ne yaptığını ne zaman yapmalı
Veri depolamak için tatlı bir yerde oturuyorsun. Bir işletim sistemi ve dosya sistemi veri deposu inanılmaz derecede kullanışlı, erişilebilir ve platformlar arası taşınabilir. Kombinasyon, neredeyse her standart dağıtım yapılandırmasında, sizin desteklendiğinizden ve uygulamanızın çalışmasını sağladığınızdan emin olun.
Aynı zamanda kod yazmak için de kolay bir kombinasyon - API oldukça basit ve basit ve çalışmasını sağlamak için nispeten az sayıda kod satırı gerekiyor.
Genellikle ne yaptığınızı yapmak idealdir:
- Yeni fikirlerin prototiplenmesi
- Akıllıca ölçeklendirilmesi gerekmeyen uygulamalar oluşturmak, akıllıca yapmak
- Bir veritabanı kurmak için kaynak yetersizliği gibi olağandışı koşullar tarafından sınırlandırılmıştır.
Alternatifler
Süreklilik arzusunuz, ve buradan aşağıya gidebileceğiniz, 'aşağı' ve 'yukarı' olarak düşündüğüm iki yön var:
Aşağı
Bu, uygulanacak en düşük seçenek, ancak bütünlük uğruna burada:
İsterseniz aşağı inebilir , yani işletim sistemi ve dosya sistemini tamamen atlayabilir ve doğrudan diskten yazabilir ve okuyabilirsiniz. Bu seçim sadece aşırı verimlilik gerektiren durumlarda genellikle alakalı olduğunu - düşünmek, örneğin, minimal bir / küçücük bir MP3 yeterli olmadan, oyuncu cihazının RAM tamamen işlevsel OS için ya da benzeri bir şey Wayback Machine inanılmaz etkili kitle gerektirir veri yazma işlemleri (çoğu veri deposu daha hızlı okuma için daha yavaş yazılar yazar, çünkü neredeyse tüm uygulamalar için çok daha yaygın kullanım durumudur).
yukarı
Burada birkaç alt kategori var - bunlar yine de tamamen dışlayıcı değil. Bazı araçlar her ikisinde de işlevsellik sağlayan, her ikisi de bir modda çalışmaktan diğerine çalışmak arasında tamamen geçiş yapabilir ve bazıları uygulamanızın farklı bölümlerine farklı işlevler sağlayarak birbirlerinin üzerine yerleştirilebilir.
Daha güçlü veri depoları
Veri manipülasyon karmaşıklığını yönetmek için hala kendi uygulamanıza güvenirken, daha yüksek ve daha yüksek miktarda veri depolamak için kendinizi ihtiyaç duyabilirsiniz. İlgili işlevler için çeşitli destek uzantılarıyla birlikte çok çeşitli anahtar / değer depoları bulunmaktadır. NoSQL araçları diğerlerinin yanı sıra bu kategoriye girer.
Aşağıdakiler uygulamanızı tanımladığında ölçeklendirmenin açık yolu budur:
- Olağandışı ağır okuma bağımlı
- Düşük (kısa vadeli) tutarlılık garantileri için yüksek performansla işlem yapma konusunda sorun değil (çoğu teklif "nihai tutarlılık").
- Veri manipülasyonunun ve tutarlılık eksikliğinin çoğunu "doğrudan" idare ediyor mu (pratikte muhtemelen ilk önce üçüncü taraf bir araç kullanacaksınız, ancak sonunda bunu uygulamanıza veya özel bir yazılı ara katmana getireceksiniz) .
- Sakladığınız veri miktarını ve / veya "nispeten basit" veri manipülasyon gereklilikleriyle arama yeteneğinizi büyük ölçüde ölçeklendirmek istiyorsunuz.
Burada bir kıpırdatma odası var - daha yavaş okumalar için daha iyi okuma tutarlılığı elde edebilirsiniz. Çeşitli araçlar ve seçenekler, belirli uygulamanızı kolayca yazmak için uygun olabilecek veri manipülasyonu apis, indeksleme ve diğer seçenekleri sağlar. Dolayısıyla, yukarıdaki noktalar uygulamanızı neredeyse tamamen açıklarsa, daha güçlü bir veri deposu çözümü ile çalışmak için "yeterince yakın" olabilirsiniz.
Tanınmış örnekler: CouchDB , MongoDB , Redis , Microsoft'un Azure , Google App Veri Mağazası ve Amazon'un ECE'si gibi bulut depolama çözümleri .
Daha karmaşık veri işleme motorları
Veri depolama uygulamasının "SQL" ailesi ve diğerleri de saf veri depolama araçlarından ziyade veri işleme aracı olarak tanımlanmaktadır. Verilerin depolanmasının ötesinde ve çoğu zaman işlerin anahtar değer deposunda mevcut olanların ötesinde çok çeşitli ek işlevler sunarlar. Aşağıdaki durumlarda bu yolu kullanmak isteyeceksiniz:
- Performansta bir başarıya ulaşacağınız anlamına gelse bile kesinlikle tutarlı olmalısınız.
- Verimli bir şekilde karmaşık veri işlemlerini verimli bir şekilde yapmak istiyorsunuz - çok karmaşık JOIN ve UPDATE işlemlerini, veri küplerini ve dilimlemeyi, vb. Düşünün ...
- Performans için sağlamlık elde etmekte sorun yok (kolay ve / veya verimli bir şekilde değiştirilemeyen tablolar gibi zorlanmış, sabit veri depolama formatları düşünün).
- Çoğu zaman daha karmaşık araçlar ve arabirimlerle başa çıkacak kaynaklara sahipsiniz.
Bu, bir veritabanı veya veri deposunu düşünmenin daha "geleneksel" yoludur ve çok daha uzun zamandır var - bu yüzden burada mevcut çok şey var ve bununla başa çıkmak için çok fazla karmaşıklık var. Bazı uzmanlık ve bilgi almak ve basit çözümler üretmek / karmaşıklığın çoğundan kaçınmak mümkün olsa da, bu muhtemelen sizin için çoğunu yönetmek için üçüncü taraf araçlarını ve kütüphanelerini kullanmanızla sonuçlanacaktır.
İyi bilinen örnekler MySQL , SQL Server , Oracle'ın Veritabanı ve DB2'dir .
İşin dış kaynak kullanımı
Karmaşıklığı yönetmenize yardımcı olmak için, veri depolama araçlarınız ve uygulamanız arasında bir araya gelen çeşitli, modern, üçüncü taraf araçlar ve kütüphaneler vardır.
Başlangıçta, veri depolarını yönetme ve manipüle etme işinin çoğunu veya tamamını elinden almaya çalışırlar ve ideal olarak, yalnızca gerektiğinde ve gerektiğinde karmaşıklığa sorunsuz bir geçiş yapmanıza izin verir. Bu, hemen ulaşılabilir ve kullanılabilir bir kaç sonuçla birlikte aktif bir girişimcilik ve araştırma alanıdır.
İyi bilinen örnekler, MVC araçları ( Django , Yii ), Ruby on Rails ve Datomic'dir . Kelimenin tam anlamıyla adil olması zordur çünkü kelimenin tam anlamıyla çeşitli veri depolarının API'leri etrafına sarmalayıcı görevi yapan düzinelerce araç ve kitaplık vardır.
Not: Metni videoya çevirmeyi tercih ederseniz, Rich Hickey'in veritabanı ile ilgili bazı videolarını izlemek isteyebilirsiniz; Bir veri deposunu seçme, tasarlama ve kullanma konusundaki düşüncenin çoğunu açıklamak için iyi bir iş çıkarmıştır.