News Contents

Toplam 29 İlan Bulundu

Understanding the meaning of persistence is important for evaluating different data store systems. Given the importance of the data store in most modern applications, making a poorly informed choice could mean substantial downtime or loss of data. In this post, we‘ll discuss persistence and data store design approaches and provide some background on these in the context of Cassandra.

Persistence is "the continuance of an effect after its cause is removed". In the context of storing data in a computer system, this means that the data survives after the process with which it was created has ended. In other words, for a data store to be considered persistent, it must write to non-volatile storage.

If you need persistence in your data store, then you need to also understand the four main design approaches that a data store can take and how (or if) these designs provide persistence:

  • Pure in-memory, no persistence at all, such as memcached or Scalaris
  • In-memory with periodic snapshots, such as Oracle Coherence or Redis
  • Disk-based with update-in-place writes, such as MySQL ISAM or MongoDB
  • Commitlog-based, such as all traditional OLTP databases (Oracle,
    SQL Server, etc.)

In-memory approaches can achieve blazing speed, but at the cost of being limited to a relatively small data set. Most workloads have relatively small "hot" (active) subset of their total data; systems that require the whole dataset to fit in memory rather than just the active part are fine for caches but a bad fit for most other applications. Because the data is in memory only, it will not survive process termination. Therefore these types of data stores are not considered persistent.

The easiest way to add persistence to an in-memory system is with periodic snapshots to disk at a configurable interval. Thus, you can lose up to that interval‘s worth of updates.

Update-in-place and commitlog-based systems store to non-volatile memory immediately, but only commitlog-based persistence provides Durability -- the D in ACID -- with every write persisted before success is returned to the client.

Cassandra implements a commit-log based persistence design, but at the same time provides for tunable levels of durability. This allows you do decide what the right trade off is between safety and performance. You can choose, for each write operation, to wait for that update to be buffered to memory, written to disk on a single machine, written to disk on multiple machines, or even written to disk on multiple machines in different data centers. Or, you can choose to accept writes a quickly as possible, acknowledging their receipt immediately before they have even been fully deserialized from the network.

At the end of the day, you‘re the only one who knows what the right performance/durability trade off is for your data. Making an informed decision on data store technologies is critical to addressing this tradeoff on your terms. Because Cassandra provides such tuneability, it is a logical choice for systems with a need for a durable, performant data store.

Show More Devamı
Tüm Yorumlar - All Comments


Black-Box Testi:
Sadece fonksiyonellik ve ihtiyaçlara yönelik test çeşididir.  Black-box  testleri,   Closed Box,    Fonksiyonellik  testi,veya   Opaque  olarak da adlandırılır.  Black-Box  testleri, yapılacak işlemin fonksiyonelliğine uygun girdi(veri) seçimini ve bu girdinin yapılacak olan işlemin beklenen ya da beklenmeyen çıktı vermesini dikkate alır.

Black-Box  testleri 2 başlık altında incelenebilir.

Kullanıcının Var Olmadığı Testler:

  • Araştırma Testi : Test edilecek olan işlem ya da uygulamanın test öncesinde öğrenilmesi, hakkında fikir edinilmesini amaçlar.
  • Ad-Hoc Testi :  Genellikle yapılacak bütün testlerin sürelerinin belirlenmesini amaçlar.
  • Yenilenme Testi :Uygulamanın herhangi bir hataya karşı ne kadar sürede eski haline geleceğini test eder.Sistem gereksinimlerine göre,tip ve yenileme hızı belirlenir.
  • Seviye Testi : İşlemlerin yapılacağı sistemin uç noktasına kadar zorlanması ve bu uç noktanın belirlenmesi amaçlanır. Seviye Testi : İşlemlerin yapılacağı sistemin uç noktasına kadar zorlanması ve bu uç noktanın belirlenmesi amaçlanır.
  • Fonksiyonellik Testi(FunctionalTesting):  Adından da anlaşılacağı gibi uygulamaya ait fonksiyonların test edilmesidir. Beklenen çıktı alındığı sürece, test devam eder.
  • Kullanılabilirlik Testi(Usability Testing):  Özellikle arayüzünü bir çok kullanıcının kullanacağı ve arayüzün önemli olduğu uygulamalar için yapılması gereken bir test çeşididir.
  • Stres Testi(Stress Testing) : Aynı işlemin(Örn: Üye girişi) aynı anda yüksek adetlerde yapılması ve sonuçlarının izlenmesi olarak tanımlanabilir . Bu testte, yapılan işlemler karşısında sistemin verdiği tepki ve sistemin dayanıklılığı gözlenir.
  • Yükleme Testi(Load Testing):  Sistem performanslarını ölçmek amacı ile yapılır. Burada amaç, kullanılan sistemin nerede ve hangi koşullarda çökeceğini belirlemektir. 
  • Duman Testi(SmokeTesting) :  Genel olarak mantık testi olarak bilinir. Duman testinden geçmiş bir uygulama, daha büyük testler için hazırdır. Yani küçük testler sorunsuz yapılmıştır.

Kullanıcının Gerekli Olduğu Testler:
  • Kabul Testi(Acceptance Testing):  Kullanıcıların sistemin beklentileri karşılayıp karşılamadığına yönelik yaptığı testlerdir.
  • Alfa Testi(Alpha Testing):  Kullanıcıların uygulama geliştirme merkezine çağrıldığı ve kullanıcının burada yapacağı işlemlere göre geliştiricilerin düzeltilmesi/değiştirilmesi gereken kısımları not aldığı testlerdir. 
  • Beta Testi(Beta Testing):  Uygulamanın kullanıcılar tarafından test edildiği bir test çeşididir. Kullanıcılar için beta versiyonu yayınlanır. Ardından kullanıcılardan gelecek geri dönüşler doğrultusunda düzeltmeler yapılır.

Show More Devamı
Tüm Yorumlar - All Comments
Yusuf 15-06-2019 20:31
Yararlı bilgiler teşekkürler


Remember

  1. Multiprogramming – A computer running more than one program at a time (like running Excel and Firefox simultaneously).
  2. Multiprocessing – A computer using more than one CPU at a time.
  3. Multitasking – Tasks sharing a common resource (like 1 CPU).
  4. Multithreading is an extension of multitasking.


async: Do this by yourself somewhere else and notify me when you complete(callback). By the time i can continue to do my thing.

enter image description here

parallel: Hire as many guys(threads) as you wish and split the job to them to complete quicker and let me know(callback) when you complete. By the time i might continue to do my other stuff.

enter image description here

the main difference is parallelism mostly depends on hardware.

Show More Devamı
Tüm Yorumlar - All Comments