Linux’ta Dosya Sistemi Yapısı

Dosyalarımız fiziksel depolama alanları üzerinde tutulur.Bu alanlar bilgisayarımızdaki dahili harddisk ,harici hard diskimiz ,CD/DVD ROM,SAN,NAS.. gibi biçimlerde olabilir. Peki bu alanlardaki bilgilere nasıl erişiriz sorusunun cevabı File System(Dosya Sistemi) oluyor arkadaşlar. File System olmadan depolama alanına ne bir şey kopyalayabiliriz, ne paylaştırabiliriz, ne güvenlik ve erişimini sağlayabiliriz ne de herhangi bir şekilde kullanabiliriz. İşletim sistemimizin verilere erişimi için yine onun bileceği bir biçimde diski biçimlendirmeliyiz. Nasıl ki Windows ortamlarında diskimizi biçimlendirirken NTFS dosya sistemini kullanıyorsak, Linux vari işletim sistemlerinde de ext2,ext3,ext4 gibi dosya sistemlerini kullanıyoruz. Linux işletim sistemi birden fazla dosya sistemine destek verir.

Bir işletim sisteminin dosya sisteminin performansı, hızı ve buna benzer çeşitli özellikleri sistemin verimli ve kararlı çalışması üzerinde doğrudan etkisi vardır. Linux dizin yapısının geliştirilmesinde FSSTND (file system standard) grubunun çalışmalarının payı çok büyük oldu. Programcılardan oluşan grup, standartların belirlenmesinde ve uygulama aşamasında Linux ile ilgilenenlere yardım etti. 1993 yılında Olaf Kirsh, Linux haber grubuna yazdığı bir e-postasında Linux dosya sistemi üzerindeki çalışmaların tamamlandığını haber verdi.

Bir Linux dağıtımından diğerine dosya sistemi yapısı bakımında küçük farklılıklar olabilir ancak genel yapı aynıdır. Bu maddede Linux dağıtımlarının kullandığı ortak dosya sistemi yapısı, dizinlerin ne anlama geldikleri ve Windows’taki bazı dosya ve dizinlerin Linux’taki karşılıkları konularında temel ve ileri düzeyde bilgi alabilirsiniz.

Dosya sistemi, işletim sisteminin bir disk veya bölüm üzerindeki dosyaları takip edebilmesi için oluşturulmuş yöntem ve veri yapıları bütünüdür. Linux’da, Unix’de olduğu gibi “Tekil Hiyerarşik Klasör Yapısı”nı benimsemiştir. Her şey / simgesiyle ifade edilen kök dizinden başlayarak dallanıp budaklanır. Kök dizin altındaki dizinler, geçmişte Linux Dosya Sistem Hiyerarşisi (kısaca FSSTND) denilen bir standart ile belirlenmiş klasörlerdir. Günümüzde Linux dağıtımlarının büyük çoğunluğunun FSSTND standartında belirlenmiş klasörlerin dışında kök dizine bir iki klasör daha ekledikleri ya da nadiren bu yapıdan bir klasörü çıkardıkları görülmektedir.

Herhangi bir dizin ya da dosyanın sistemdeki adresi önce kök dizinden başlar sonra o dosya ya da dizine ulaşmak için geçilmesi gereken dizinler arasına yine / yazılarak elde edilir. Örneğin /home/ahmet yolu, kök dizininde, home isimli dizin içindeki ahmet dizininin konumunu belirtir. Bu ifadede en baştaki / işareti kök dizini belirtmektedir.

Windows’ta dosya adreslerinde \ (ters slaş) işareti kullanılırken Linux’ta / işareti kullanılır. Linux’ta bu kullanımın nedeni Linux’un Unix geleneğini takip etmesindendir. Ayrıca bu geleneğe uygun olarak küçük büyük harf duyarlılığı önemli bir konudur. Örneğin; Windows’ta KLASOR_ADI ve klasor_adi aynı şeydir; fark etmez. Linux’ta ise bunlar farklı klasörlerdir.

Windows’ta bir program yüklediğinizde, programa ait dosyaların büyük çoğunluğu Program Files içindeki kendi klasörüne yüklenir. Linux’ta ise durum farklıdır; programın, örneğin belgelendirmeleri /usr/share/doc/program_adi/ altına atılır, man(ual) dosyaları, /usr/share/man/man altına atılır, info dosyaları /usr/share/info altına atılır. Bu şekilde aradığınız bir yerelleştirme dosyasını yani programın Türkçe çalışması için yapılmış çeviri dosyasını, programın kullandığı kütüphane dosyasını yani Windows’taki (.dll) Linux’daki (.so) dosyası ve bunun gibi belirli bir amaç için kullanılan dosyaları yerleştirilmiş oldukları kendine özgü klasörün içinde bulabilirsiniz. Kısacası Linux’ta, sistem hiyerarşisine gömülen bir yapı söz konusudur. Yüklenen herhangi bir program, işletim sisteminin muhtelif yerlerine yerleşmektedir.

Linux'ta Dosya Sistemi Yapısı (devamı..)

136 total views, no views today


MYSQL Depoloma Motorları(Storage Engine) ve Farkları

Depoloma motorları, MYSQL’DE farklı tablo türleri için SQL işlemlerini yürüten MYSQL bileşenleridir. InnoDB,  varsayılan ve en genel amaçlı depoloma motorudur. Oracle’da özel kullanım alanları dışında InnoDB kullanılmasını önerir. (MySQL 5.5’den itibaren varsayılan saklama motoru InnoDB’dir. Öncesinde varsayılan saklama motoru MyISAM’dır.)

Sunucunuuzn hangi depolama motorlarını desteklediğini belirlemek için SHOW ENGINES komutunu kullanabiliriz.

MSQL storage engine

 

 

 

Tabloda gördüğümüz gibi bir çıktı elde ederiz. Buradaki sütun adlarını inceleyecek olursak;

  • Engine : depolama motorunun adını içerir.
  • Support : sürücümüz üzerinde desteklenip desteklenmediği içerir.
  • Comment : depolama motoru hakkında kısa bir açıklama içerir.
  • Transactions : transaction yapısını destekleyip, desteklemediği bilgisini içerir.
  • XA : Koordinat tabanlı transaction işlemlerini destekleyip, desteklemediği bilgisini içerir.
  • Savepoints : Yapılan işlemlerin geri alınmasına (rollback) yönelik kayıt noktaları (savepoints) oluşturmayı destekleyip, desteklemediği bilgisini içerir.

Depolama motorları  belirli bir veritabanı tablosundan bilgi çekmeyi tabloda bilgi saklamayı ve tablodaki bilgiyi kontrol etmeyi sağlar.

MySQL sunucusunun mimarisi aşağıdaki şekilde verilmiştir. Verileri kalıcı olarak diske kaydeden, SQL sorgularını çalıştıran ve verileri diskten ya da bellekten derleyip getiren gerçekte depoloma motorlarıdır. Üstelik depoloma motorları eklenip çıkarılabilen bir yapıya sahiptir. MySQL için yazılmış özel kullanım alanları olan çok sayıda üçüncü parti depoloma motorları mevcuttur tokudb, aria.

MSQL depolama motoru

 

 

 

 

 

 

 

 

MySQL 5.7 desteklenen depolama motorları aşağıdaki gibidir.
(devamı..)

490 total views, no views today


Oracle Redefinition

Redefiniton Oracle 9i ile Oracle dünyasına tanıtılan DBMS_REDEFINITION paketidir. DBMS_REDEFINITON paketi production ortamlarda veritabanında kesinti sürelerini nerdeyse sıfır denilecek sürelerde tablo’nun storage parametrelerini degiştirmek,farklı bir tablespace e taşımak veya yeni kolonlar eklemek,silmek ve degiştirmek için kullanılabilir. Örnekler verecek olursak ;

  • Lob alanlı yapılarda basic file’dan secure file a geçmek
  • Kolon eklemek, çıkarmak veya değiştirmek
  • Tabloyu partitionlı yapıya geçirmek
  • Tabloyu reorganize etmek
  • Ve tablodaki bütün storage parameterelerini değiştirirken kullanabiliriz.

DBMS_REDEFINITION paketi aslında arka planda aşağıda resimde gösterilen işlemi yapıyor.

Oracle Redefinition Example

 

 

 

 

 

 

  1. Öncelikle bu paketle tablonun Online redefinition işlemine uygun olup olmadığına bakıyor. Bu kontrolü yaparken bizden primary key veya rowid değerine göre kontrol yaptırmamızı isteyecek.
  2. Bu adımda tablonun hedeflediğmiz halini oluştururuz. Aslında bu biraz Create table as select’e benziyor.
  3. Üçüncü adımda ise ana tablomuzdaki verileri yeni oluşturduğumuz tabloya aktarır.
  4. Bu adımda ise ana tablo ile yeni tablo arasında veri anlamında çok fark var ise istediğimiz zaman bu verilerin senkronozisyonunu sağlar.
  5. Son adımda ise tabloya kısa bir süreliğine erişimi kapatarak verilerin senkronozisyonunu sağlar ve daha sonrasında tabloların isimleri yer değiştirir. Böylece amacımızada ulaşmış oluyoruz.

Aslında bütün resmin kısaca bir defa daha üstünden geçersek hedeflediğimiz tabloyu oluştururuz. Daha sonra DBMS_REDEFINITION paketini kullanarak ana tablodaki veriler yeni tabloya atılır aslında burda yapılan işlem insert table(a,b,c) select a,b,c from table işlemidir, tabi bununla birlikte yeni tablo materialized view e çevrilir ve aynı anda ana tablo için materialized view log olusturup tablomuza gelen insert,delete ve update işlemlerini kayit altina alınır. Daha sonrasında tablolarımızı her senkron etme işlemimizde ise materialized view log kullanılarak refresh (fast refresh) edilir. En sonda tabloların ismi rename yapılarak isim değişikliği yapılır.

Aşağıda yapacağım örnekte Lob alan bulunan tablomda compress özelliğini kullanacağım ve bunu yaparken redefinition kullanacağım için çok az kesintim olacak.
(devamı..)

1,993 total views, no views today


Materialized View

Materialized View diğer viewlerden farklı olarak sadece data dictionary de tutulmuyor bundan farklı olarak fiziksel olarak veride tutan view/objedir. Materialized View ile referans aldığımız sql’in o anki verilerini fiziksel olarak tutarız ve ihtiyacımıza göre view ın verisini değişik opsiyonlarla güncelleyebiliriz.

Tekrar edecek olursak viewler bir sql sorgusunun saklanma şeklidir, Materialized Viewler ise hem sql sorgusu hemde veriden oluşmaktadır. Bu nedenle Materialized View verileri replicate(kopyasini almak) etmektedir. Peki replicate neden gerekebilir ?

Aslında daha çok DW uygulamalrında sıkça rastlarız ama bunun dışında veritabanı transferlerindede kullanılabilir. Örneğin salı günkü verilerden yola çıkarak, çarşamba günü rapor hazırlama işlemleri bu şekilde daha hızlı gerçekleştirilebilir. Salı akşamı sorgular çalıştırılır, Materialized Viewler güncellenir, çarşamba günü sorgular çalıştırıldığında Ana tablo yerine bu Materialized View lerden ilgili bilgiler çekilmiş olur. Bu da bizim kaynakları kullanma performansımızı arttıracak. Fakat bu durumda güncel verilerden yararlanmamış oluyoruz, sadece önceki güne ait verilerden yararlanmış oluyoruz. Tabi istersek bunu önleme yöntemleri de mevcut, Materialized View de.

Yani Materialized Viewler daha çok aşağıdaki konulara çözüm olur.

  • Kayıt sayınız artıp, rapor sorgularınız çok geciktiğinde.
  • Birden fazla tablodan sorgu almak sizi zorladığında.
  • Özet tablolarınızı periyodik olarak doldurmak istediğinizde.
  • Anlık olmayan raporlarınızda, yani 1 gün gecikmeli ya da ayda bir verdiğiniz raporlarda veya periyodik güncellenmesi gereken verilerde.

Materialized View oluşturmak için Sintaksis  aşağıdaki gibidir;

- Normal
CREATE MATERIALIZED VIEW view-name
BUILD [IMMEDIATE | DEFERRED]
REFRESH [FAST | COMPLETE | FORCE ]
ON [COMMIT | DEMAND ]
[[ENABLE | DISABLE] QUERY REWRITE]
AS
SELECT ...;
-- Pre-Built
CREATE MATERIALIZED VIEW view-name
ON PREBUILT TABLE
REFRESH [FAST | COMPLETE | FORCE ]
ON [COMMIT | DEMAND ]
[[ENABLE | DISABLE] QUERY REWRITE]
AS
SELECT ...;

(devamı..)

3,254 total views, no views today


Oracle lob veri Securefile

LOB(Large Object) Veri Tipleri’nin amacı boyutu büyük olan verileri saklamaktır. Örn. doküman(txt, word, excel, xml ), resim, video, ses vb. Bu tarz veriler önceden long, raw , long raw gibi veri tiplerinde tutulurdu günümüzde ise daha çok BLOB, CLOB, NCLOP gibi veri tiplerinde büyük objeler tutulur. long, raw , long raw gibi veri tipleri daha çok eskiye yönelik destek için kullanılmaktadır.
BLOB : Verileri binary olarak saklar. Max 128 TB a kadar veri saklar . Resim , video gibi dosyalar bu veri tipinde saklanabilir .

CLOB : Verileri karakter olarak saklar . Max 128 TB a kadar veri saklar . TXT dosyalarının içerisindeki verileri CLOB veri tipinde saklayabiliriz.
Oracle 11g ile ile birlikte yukarıda saydığımız veri tiplerini saklamak için Oracle Securefile yapısı duyurulmuştur. Securefile ile birlikte lob alanlarda sıkıştırma, yenilenen veriyi engelleme(deduplicate) şifreleme, önbellğe alma(cachinhg), loglama mekanizmasını belirleme gibi özellikler gelmiştir.

  • Deduplicate : LOB alanlarda bu özelliği belirledikten sonra her kayıt için hash değerler çıkartılacak örtüşen hash değerler veritabanına 1 defa yazılacaktır. Burada aslında tabloda ne kadar yenileyen verimiz varsa o kadar avantajlıdır. Örnek verecek olursak benim çalıştığım tablolardan birinde 50 GB’lık tabloyu 7 GB’a düşürdü.

 

ALTER TABLE TEST MOVE LOB (VERI) STORE AS SECUREFILE ( DEDUPLICATE );

veya

CREATE TABLE TEST
(
ID NUMBER,
VERI CLOB
)
TABLESPACE "TEST_SECUREFILE"
LOB ("VERI") STORE AS SECUREFILE
(TABLESPACE "TEST_SECUREFILE" DEDUPLICATE);
  • Compress : Secure file burada standart sıkıştırma teknolojilerini kullanıyor ve verileriniz özellikle text tabanlıysa çok büyük avantajlar sağlayabiliyor bu daha çok verininizin tipine bağlı ama özellikle xml ve türevleri için şiddetle tavsiye ederim. Örnek verecek olursam benim ele aldığım bir tabloda 400 GB’dan 50 GB’a düştü tablo. Ve compress teknolojisiyle sadece disk alanından değil daha az i/o yapacağı için performansdan’da ciddi kazanç sağlanılıyor. Çok güzel sonuçlar aldım kesinlikle testler yapıp sonuçlarına göre uygulamaınızı öneririrm.
  • Encryption : Verilerinizi wallet ile şifreleyebilirsiniz.
  • Caching : Sık kullandığımız veri ise file systemden farklı olarak verilerimizi cache tutabiliriz.
  • Logging : lob alanlarda ki verilerimiz büyük olduğu için redo loga gitmeden işlemlerimizin yapılmasını isteyebiliriz.

Securefile ile ilgili hikaye kısmından sonra gerçek hayattan tecrübelerimize gelecek olursak lob alanlarda saklanan veriye bağlı olarak deduplication ve compress özelliği disk alanı ve performans(disk io’dan dolayı) olarak çok etkileyici sonuçlar verebiliyor. Buda aslında pozitif olarak bütün yapıyı etkiliyor rman(yedek alacağı veritabanının boyutu azalıyor), datapump, data guard gibi ;
NOT : Securefile’ı kullanacağınız tabloyu mutlaka ve mutlaka tek tek test ettikten sonra karar verin çünkü tablonun içerdiği veriye bağlı olarak herhangi bir kazancı olmadığı gibi performans olarak kayba neden olabiliyor.
NOT : Aşağıdaki testler insert içindir delete ve select içinde bu paralelde sonuçlar vermektedir.

Oracle_SecureFile_Compress_Deduplicate

 

 

 

 

 

 

NOT : db_securefile parametresi veritabanında securefile kullanımını belirler.

  • Permitted : Varsayılan değerdir. Varsayılan olarak lob lar basicfile olarak oluşturulur ama isteğe bağlı olarak securefile oluşturulabilir.
  • Always : Varsayılan olarak lob alanlar securefile ile oluşturulur.
  • Never : Lob alanlarda securefile kullanımını engeller.
  • Ignore : Securefile kelimesi yok sayılır.

Yararlı olması Dilegiyle …
Yazar : Mustafa Bektaş Tepe

1,500 total views, no views today


SQLPlus output to csv file

SQLPLUS araci ile excel çıktısı alabilmek için örnek;

set term off
set echo off
set underline off
set colsep “;”
set linesize 100
set pagesize 0
set sqlprompt ”
set lines 1000 pages 1000
set trimspool on
set feedback off
set heading on
set newpage 0
set headsep off

spool myFile.csv
select * from locations;
spool off;
exit;
/

2,806 total views, no views today


  • Sertifikasyon



  • Etiketler

  • Topluluklar

                     
                     
  • Live Traffic Feed

    Feedjit Widget
  • Copyright © 1996-2010 Mustafa Bektaş Tepe. All rights reserved.
    Türkçeleştirme Blogizma | AltyapıWordPress
    Takip Et

    Her yeni yazı için posta kutunuza gönderim alın.

    Diğer takipçilere katılın: