Verinin Temel Kavramları

Son yıllarda teknolojinin hayatımızda daha fazla yer alması akıllı telefonların kullanımı, sosyal medya platformlarının çeşitlenmesi ve patlaması çok miktarda veri üretilmesine sebebiyet verdi. Ek olarak nesnelerin interneti (Internet of Things) ile hayatımızı kolaylaştırmak için kullandığımız cihazlarda çok miktarda veri üretilir hale geldi. Yüksek hızda veriler üretilir ve saklanır hale geldi. Kıtalar arası şubeleri bulunan kuruluşlar kendilerini geliştirmek ve sürekliliklerini artırmak adına verileri işleme ve anlamlandırmak için ellerindeki verileri işleme ve görselleştirme yoluna gittiler. Pazardaki rekabetin önünde kalmak için veriye dayalı karar verme süreçleri arttırdılar.

Bilgi Teknolojileri alanı, veri ortamındaki değişikliklere çok hızlı bir şekilde adapte oldu. Bilgi teknolojilerinde yaptığımız işlerin yanı sıra rollerin adlarında da hızla birçok değişiklik oldu. Örneğin, veri analisti, veri mühendisi, veri bilimcisi vb. son zamanlarda popüler hale gelen yeni rollerden bazılarıdır. Ayrıca yapılandırılmış veriler, yarı yapılandırılmış veriler ve yapılandırılmamış veriler dahil olmak üzere her tür veriyle, verilerin işlenmek üzere farklı şekillerde kullanıma sunulmasıyla ilgilenmeye başladık.

Veri Nedir?

“Datum” kelimesi Latince kökenlidir. Data kelimesi Datum’un çoğuludur. Veriler bir araya getirilmiş birden fazla bilgi parçasıdır diyebiliriz. Veri hakkında konuştuğumuzda bir sürü bilgiden bahsediyoruz. Teknolojinin hızla ilerlediği günümüz çağında “veri” kelimesi çok yaygın bir şekilde kullanılmaya başlanmıştır. “Veri bilimi” ve “veri mühendisliği” çok popüler terimler haline geldi ve bu da verilerin önemini artırdı. Bilgi Teknolojileri alanında, herhangi bir yazılımın iki bölüme ayrıldığını biliyoruz. Bir kısım yazılımın kodu, diğer kısım ise yazılım kodunun üzerinde işlemlerini gerçekleştireceği verilerdir. Düzenli olarak uğraştığımız çeşitli veri türleri vardır. Genel olarak, verilerin nasıl düzenlendiğine veya saklandığına bağlı olarak, verileri şu üç kategoriye veya türe ayırabiliriz: yapılandırılmış veriler, yarı yapılandırılmış veriler ve yapılandırılmamış veriler. Her birini anlamaya çalışalım;

Yapılandırılmış Veri (Structured data)

Yapılandırılmş veriler belirli bir anlam ve bütünlüğe ulaşmış organize edilmiş belirli bir şema yada formata uyan verilerdir. Verilerin her bir bölümü hem sistem tarafından hem de insan tarafından yorumlanması çok kolay olacak şekilde yerleştirilir. Sistemler çerçevesi çizilmiş ve anlamlamdırılmış her veri setini kullanmada oldukça başarılı olmuştur. Excel gibi programlarında depoladığımız veriler ve SQL Server veya Azure SQL veritabanı sistemlerinde depolanan veriler, temelde tablo biçiminde depolanan yapılandırılmış verilerdir.

Yapılandırılmış veri örneğine bakalım. Şirketinizin tüm çalışanlarının veya belirli bir departmanın ayrıntılarını içeren bir Excel sayfası oluşturmanız gerektiğini varsayalım. Çalışan Kimliği, Adı, Soyadı, Katılma Tarihi, Doğum Tarihi ve Maaş gibi sütunlar bulunacaktır. Excel sayfanızda depolanan verilerin yapılandırılmış veriler olduğunu söyleyebiliriz çünkü oldukça düzenlidir. Benzer şekilde, o Excel sayfasındaki çalışan ayrıntılarını SQL Server gibi bir veritabanında yeni bir tablo oluşturarak depolamaya karar verirseniz, bu da yapılandırılmış veri olarak kabul edilir.

Yarı Yapılandırılmış Veri (Semi-structured Data)

Yarı yapılandırılmış veriler, tam olarak organize edilmemiş ancak yine de belirli bir şema veya formata kısmen uyan herhangi bir veridir. JSON (JavaScript Object Notation) belgeleri ve XML (eXtensible Mark-up Language) dosyalarında depolanan veriler, yarı yapılandırılmış verilere iyi örneklerdir. Yapılandırılmış veriler için kullandığımız alan adları veya sütunlar yerine, burada bir kayıt içindeki farklı veri noktalarını tanımlamak için etiket (Tag) kullanıyoruz. Sütunların sırası ve her bir kayıt için sütun sayısı gerçek gereksinimlere göre değişebileceğinden, organize olarak kabul edilmez. Bu durum, yarı yapılandırılmış verilerin sabit veya katı bir şema veya veri modelinden yoksun olduğu anlamına gelir. Genellikle veriler ve şemalar ayrılmadan karıştırılır. Key-Value ve Graph veritabanları, yarı yapılandırılmış verileri depolamak için kullanılır.

Bilgi Teknolojileri ekibinizin size çalışanlarınızın ayrıntılarını içeren bir JSON dosyası verdiğini varsayalım. Dosyayı açar ve içindeki verileri okursanız, her bir veri değeri için etiketler(Tags) olduğunu fark edeceksiniz. Örneğin, birkaç çalışan için, kuruluşunuzda geçmişte sahip oldukları önceki rolleri veya pozisyonları depolamak için size iç içe bir yapı gösterebilir. Burada, çalışan verileri bir şekilde organize edilmiştir ve kısmen bir şema veya veri modeline uygundur, bu nedenle yarı yapılandırılmış veriler olarak adlandırılır.

Yapılandırılmamış Veri (Unstructered Data)

Kurumsal verilerin büyük çoğunluğunu yapılandırılmamış veriler oluşturduğundan, ayrıntılı olarak bilmeniz gereken en önemli veri türüdür. Organize olmayan ve belirli bir şemaya veya formata uymayan herhangi bir veriye yapılandırılmamış veri denir. Yapılandırılmamış veri son birkaç yılda hacmi ve veriye dayalı karar verme süreçlerine kattığı değer nedeniyle artan bir ilgi görmeye başladı. İşletmeler, yapılandırılmamış verilerden gizli bilgileri depolamak, işlemek ve çıkarmak konusunda büyük zorluklarla karşı karşıyadır.

Belgeler, görüntü dosyaları, ses dosyaları, video dosyaları ve benzerlerinin tümü yapılandırılmamış veri örnekleridir. Yüksek düzeyde organize olmadığı ve belirli bir şeması olmadığı için yapılandırılmamış verilerden anlamlı çıkarımlar elde etmek çok zordur. Yapılandırılmamış veriler için, yapılandırılmamış verileri içeren dosyanın içinde depolanan veriler hakkında ek bilgiler depolamanıza olanak tanıyan dosya düzeyinde bazı özellikleri saklamayı deneyebilirsiniz. Ancak bu özellikler, yapılandırılmamış verilerle ilgili tüm ayrıntıları size veremeyecektir. Örneğin, çok sayıda görüntü dosyasını işlemeniz gerekiyorsa, her görüntüyü tarayabilen ve her görüntünün içinde ne olduğunu tahmin edebilen bazı gelişmiş makine öğrenimi (Machine Learning) algoritmalarını kullanmaktan başka bunu yapmanın basit bir yolu yoktur.

Yapılandırılmamış verilerin depolanması da gerçek bir zorluklarla doludur. Bu tür verileri herhangi bir şemaya uymadığından bir veritabanında saklayamayız. Son yıllarda, bulut tabanlı hizmet veren şirketlerinin Blob depolama teklifleri bu sorunu büyük ölçüde çözmüştür. Azure, yapılandırılmamış verilerinizi depolamak için birden çok seçeneğe sahiptir. Azure Dosya Depolama, Azure Blob Depolama, Azure Data Lake Storage 1. ve Azure Data Lake Storage 2. yapılandırılmamış verileri Azure bulutunda depolamak için kullanabileceğimiz çeşitli depolama seçenekleridir. Genel olarak, gerçek depolama gereksinimlerinize göre seçebileceğiniz çeşitli uygun maliyetli seçeneklerle son derece güvenli sınırsız depolama kapasitesi ile verilerinizi güvenle saklayabilirsiniz.

Veri İşleme Modelleri

Veriyi kaynağından aldığınızda ham ve işlenmemiş halde olacaktır. Ham verilerden anlamlı çıkarımlar elde etmek için önce işlenmesi gerekir. Ham verileri kullanılabilir ve istenen bir forma dönüştürme işlemi, veri işleme olarak bilinir. Verileri nasıl ve ne zaman işlediğinize bağlı olarak farklı veri işleme yöntemleri vardır;

Toplu Veri İşleme (Batch Data Processing)

Veri işlemenin en yaygın ve geleneksel yoludur. Yeni alınan verileri, işlemeden önce bir grupta topladığınızda, toplu veri işleme olarak bilinir. İleride tek bir toplu işin parçası olarak işlemeden önce veri alımı birden çok kez gerçekleşebilir. Toplu veri işlemenin birden fazla artısı ve eksisi vardır. İhtiyaçlarınıza göre toplu veri işlemenin uygun olup olmayacağına karar verebilirsiniz.

Mesai saatleri dışında verileri işlemenizi sağlar. Aynı zamanda büyük miktarda veriyi aynı anda işleme esnekliği sağlar. Genelde iş süreçlerinde en az etkiye sahip olacağı, gece saatlerinde gerçekleştirilir. Genel olarak, mesai saatleri içinde çeşitli çevrimiçi işleme (Online Transaction Processing – OLTP) sistemlerinden toplanan veriler, gecelik toplu veri işleme işlerinin bir parçası olarak mesai saatleri bittiğinde işlenecektir. İş gereksinimlerine bağlı olarak, toplu veri işleme işlerini gün içinde birden fazla çalıştırmaya da karar verebilirsiniz. Tüm verileri gece saatlerinde birlikte işlemek yerine, verileri her dört veya sekiz saatte bir işlemeye karar verebilirsiniz.

İçinde bulunduğumuz ana kadar, alınan veriler hemen değil, sonrasın toplu olarak işlendiğinden, toplu veri işlemenin işlenmiş verilerin kullanılabilirliğini geciktirdiğini fark etmişsinizdir. Bunun veri işleme için kabul edilebilir bir yaklaşım olmadığı birçok iş senaryosu vardır. Toplu veri işlemenin göz önünde bulundurmanız gereken bir diğer sınırlaması, gerekli tüm verilerin toplu veri işleme sırasında herhangi bir hata olmadan mevcut olması gerektiğidir. Hatalı veya eksik veriler, toplu veri işleme programında iş sonuçlarını etkileyebilecek bir gecikmeye neden olabilir.

Satış sisteminizden her günün sonunda tüm satış elemanlarına ait satış verilerini indirdiğinizi varsayalım. Buna dayanarak her gün için her satış elemanının satış ayrıntılarını içeren birleştirilmiş satış raporunu güncellemek için bir süreç işletirsiniz. Toplu iş içinde bir gün için alınan verileri topladığınız ve grupladığınız ve ardından o gün için satış raporunu güncellemek bu sürece bir örnektir.

Gerçek Zamanlı Veri İşleme (Streaming or Real-Time Data Processing)

Mevcut verilerinize eklenen veri parçası hemen işleniyorsa, buna gerçek zamanlı veri işleme denir. Verileri büyük bir gecikme olmaksızın gerçek zamanlı olarak işlediği için gerçek zamanlı (Real Time) veri işleme olarak da bilinir. Toplu veri işlemeden farklı olarak, veri işleme yalnızca birkaç saniye veya milisaniyelik bir gecikmeyle gerçek zamanlı olarak gerçekleştiğinden, veri alındıktan sonra herhangi bir bekleme olmaz. Sürekli olarak yeni ve dinamik verilerin üretildiği iş senaryoları vardır. Bu senaryolar, gerçek zamanlı veri işleme(Real Time) veya akışlı veri (Streaming) işlemeyi kullanmak için en uygun olanlardır. Birkaç saniyelik herhangi bir gecikme iş sonuçları üzerinde olumsuz bir etkiye neden olacağından, kritik zaman gerektiren uygulamalarda veri akışı işlemeyi gerektirecektir.

Toplu veri işleme, daha sonra işlenecek bir toplu iş içindeki tüm verilere sahipken, gerçek zamanlı veri işleme, yalnızca en son verilere veya bir dakikadan daha kısa bir zaman aralığında oluşturulan verilere sahiptir. Toplu veri işleme, bir toplu iş içinde çok büyük miktarda veriyi işleyebilirken, akışlı veri işleme, verileri gerçek zamanlı olarak işlemesi gerektiğinden aynı anda yalnızca birkaç kaydı işler. Bu farklılıklar, büyük ve karmaşık analitik iş yükleri için toplu veri işlemeyi kullanmanız gerektiği anlamına gelirken, veri işleme için çok sınırlı bir zaman aralığı nedeniyle akış veri işleme basit hesaplamalar veya toplamalar için kullanılmalıdır.

Her bir satış elemanı tarafından gerçek zamanlı olarak yapılan her bir satışın ayrıntılarını içeren bir satış raporunu güncellemekten sorumlu olduğunuzu varsayalım. Burada, satış işlem sisteminizde bir satış kaydedildiği anda verileri akışa almanız ve gerçek zamanlı olarak işlemeniz gerekecektir. Bu, kontrol panelinizde gerçek zamanlı satış sonuçlarını görmenizi sağlar.

“Temiz veriler veya yeterince temiz veriler olmadan, veri biliminiz değersizdir.”

Michael Stonebraker, adjunct professor, MIT

İlişkisel Veri Yapıları

Geçmişte her uygulama, verileri kendi benzersiz veri yapısında saklıyordu, bu da üzerinde değişiklik yapmayı çok zorlaştırıyordu. Bu veri yapısının tasarlanması, kodlanması ve bakımı zordu. Bu sorunu çözmek için ilişkisel veritabanı yönetim sistemleri (RDBMS) tanıtıldı. İlişkisel veritabanları, birçok uygulamada çoğaltılması kolay bir ilişkisel veri modelinin belirli modelini takip ettikleri için geliştiriciler için hayatı kolaylaştırdı. Burada tek tek inceleyeceğimiz ilişkisel verilerin bazı önemli özellikleri vardır:

  • Tablo (Table): Gerçek hayattaki bir nesne, bilgi veya veri depolamak istediğimiz bir varlık olarak düşünülebilir. Bu doğrudan bir tabloya eşlenmektedir. Tablo ilişkisel verilerin en önemli yapısını oluşturur.
  • Satırlar ve sütunlar (Rows and Columns): Bir tablo, birden çok benzer nesne veya varlık hakkında birden çok kaydı veya bilgiyi tek bir tabloda saklamamıza izin veren bir veya birden çok satırdan oluşur. Her satırda, gerçek hayattaki nesne veya varlık hakkında farklı türde bilgileri depolamak için bir veya daha fazla sütun bulunur. Her sütun, her satır için yalnızca bir tür değer depolayabilir. Her satır aynı sayıda ve türde ve aynı sırada olacaktır.
  • Birincil anahtar (Primary Key): Bir tablo içinde benzersizliği korumak veya bir tablodaki her kaydı benzersiz bir şekilde tanımlamak için, tüm satırlardaki en az bir sütunun farklı ve benzersiz değerlere sahip olması gerekir. Bu sütun, tablonun birincil anahtarı olarak bilinir. Tablo içinde benzersiz olmak için birden fazla sütunu birleştirmeniz gerekeceği bir senaryo olabilir. Bu durum çalışmaya ters bir durum değildir.
  • İlişki (Relationship): Veritabanı içindeki tablolar arasında ilişkiler kurmanıza izin verdiği için ilişkisel veritabanının adını aldığı çok önemli bir özelliktir. Bir tablodan birincil anahtarı başka bir tabloda yabancı anahtar olarak ayarlayarak iki tablo arasında ilişki tanımlayabiliriz. Bu bize gerçek hayattaki nesnelerin ilişkilerini ilişkisel verilerde çok kolay bir şekilde uygulama yeteneği verir.
  • Yabancı Anahtar (Foreign Key): İki tablo arasında ilişki kurabilmek için ikinci tabloda birinci tablonun birincil anahtarının bulunması ve ikinci tablodaki o sütunun yabancı anahtar olarak tanımlanması gerekir. Bu şekilde, bir yabancı anahtar, ikinci tabloda bulunan sütun veya sütunların birleşimidir ve aynı sütun veya sütun kombinasyonu, birinci tablodaki birincil anahtar olarak tanımlanır. Bu, iki tablo arasındaki ilişkileri tanımlamada çok önemli bir rol oynar.
  • Structured Query Language (SQL): İlişkisel tablolardan saklanan verileri kolayca sorgulayabilme yeteneğine sahip olmak gerekir. SQL, verileri sorgulamanın yanı sıra, bir tablo oluşturma, bir tabloya kayıt ekleme, bir tabloya kayıtları güncelleme ve bir tablodan kayıtları silme gibi çeşitli diğer işlemleri de destekler. Ayrıca, sorgularınızda belirtebileceğiniz koşullara göre satırları filtrelemenize olanak tanır. İki veya daha fazla tabloyu birleştirmeyi veya birleştirmeyi mümkün kılarak, tek bir sorgu ifadesi kullanarak aynı anda iki veya daha fazla tablodan veri almanıza olanak tanır.
  • ACID (Atomicity, Consistency, Isolation, Durability): Veritabanında yapılacak herhangi bir değişiklik, veritabanı üzerinde gerçekleştirilecek tek bir mantıksal iş birimi olan bir işlem aracılığıyla yapılır. ACID özellikleri, işlemden önce ve sonra tutarlılığı korumak için ilişkisel veritabanlarının çoğunda izlenir. Atomicity işlemin başarılı olmasını veya başarısız olmasını sağlar. Kısmi başarı veya başarısızlığa izin verilmez. Consistency her işlemden önce ve sonra veritabanının doğruluğunun korunmasını sağlar. Isolation veritabanında tutarlılıktan ödün vermeden birden fazla işlemin aynı anda gerçekleşmesini sağlar. Bir işlem tarafından gerçekleştirilen değişiklikler, ilk işlem başarıyla tamamlanana kadar diğer işlem tarafından görülmeyecektir. Durability, işlemlerin veritabanına bağlandıktan sonra, herhangi bir sistem arızası durumunda kolayca geri alınabilen kalıcı depolamada yedeğinin bulunmasını sağlar.

Azure, çeşitli RDBMS’lerde ilişkisel verileri depolamak için birden çok seçenek sunar. Azure SQL Veritabanı, PostgreSQL Azure Veritabanı, MySQL Azure Veritabanı ve MariaDB Azure Veritabanı, ilişkisel verileri depolamak için Azure’da kullanılabilen çeşitli ilişkisel veritabanı yönetim sistemleri (RDBMS) seçenekleridir.

İlişkisel Olmayan Veri Yapıları

İlişkisel bir veri yapısına sahip olmayacak veri yapıları vardır. Örneğin video, ses, görüntü, metin verisi ve benzerlerini ilişkisel veri olmadığı için ilişkisel bir veritabanında depolayamazsınız, ancak yine de bu tür verilerle çalışmanız gerekir. İlişkisel olmayan veritabanlarında saklamanız gerekecektir. Bu veriler ilişkisel bir yapıya sahip olmayacağından ilişkisel bir veritabanında bir tabloda saklanamazlar.

Genel olarak, ilişkisel olmayan verilerin boyutu ilişkisel verilerden daha büyüktür ve ayrıca çeşitli veri formatlarda olur. İlişkisel olmayan verilerin önemli özelliklerini anlamak gerekir. Öyleyse, burada birkaçını kontrol edelim:

  • Container: Bildiğimiz gibi tablolar ilişkisel verileri depolamak için kullanılır. Burada, ilişkisel olmayan verileri depolamak için Container’ları kullanabiliriz. Bu, farklı şema veya farklı alanlara sahip birçok varlık veya nesneyi saklamamıza izin verir. Bu nedenle Container’lar ilişkisel bir veritabanındaki bir tablo için mümkün olmayan çeşitli şemaları destekler.
  • Storage Flexibility (Depolama Esnekliği): İlişkisel olmayan verilerin sabit bir şeması olmayacaktır. Ses, video, görüntü, metin vb. gibi çeşitli formatlardaki verileri depolamak için depolama esnekliğine sahip olmak gerekir.
  • Veri Alma Süreci: İlişkisel olmayan veriler için, genellikle bir varlığı veya nesneyi tanımlamak için benzersiz bir anahtar/değer (Key-Value) çifti kullanılır. İlişkisel olmayan veritabanı, ilişkisel olmayan verilerin kolayca alınmasına yardımcı olan anahtar/değer çiftlerini destekler. Anahtar/değer çiftlerini yalnızca depolanan varlıkları veya nesneleri yinelemek veya filtrelemek için kullanmanız önerilir. İlişkisel olmayan veritabanları, kendi SQL diline benzer veri sorgulama ortamlarını sağlayacaktır veya veri alımı için kendi prosedürlerine sahip olabilir.

İlişkisel olmayan veritabanlarını kullanmayı planladığınızda, önceki özellikleri anlamak ve ilişkisel olmayan veri tabanı seçiminiz tarafından bunlardan hangilerinin desteklendiğini kontrol etmek çok önemlidir. Azure, çeşitli ilişkisel olmayan veri türlerini depolamak için birden çok seçenek sunar. Azure Cosmos DB, Azure Blob Storage, Azure File Storage ve benzeri, Azure tarafından sağlanan ilişkisel olmayan veri depolama seçeneklerinden bazılarıdır.

Kaynaklar

https://www.purestorage.com/knowledge/big-data/structured-vs-unstructured-data.html

https://mitsloan.mit.edu/ideas-made-to-matter/15-quotes-and-stats-to-help-boost-your-data-and-analytics-savvy

https://www.mongodb.com/unstructured-data

https://www.ibm.com/cloud/blog/structured-vs-unstructured-data

https://www.teradata.com/Glossary/What-is-Semi-Structured-Data#:~:text=Semi%2Dstructured%20data%20refers%20to,not%20have%20a%20fixed%20schema.

https://www.mongodb.com/databases/non-relational

https://hevodata.com/learn/sql-batch-processing/

https://sqlstream.com/sql-for-real-time-streaming-analytics/

Leave a Reply

Your email address will not be published. Required fields are marked *