21 Temmuz 2017 Cuma

Ders 2: Datawarehouse Kavramları


  • OLTP(OnLine Transactional Processing):Sürekli insert, delete ve update işlemlerinin yapıldığı bir veritabanı olarak düşünebilirsiniz.Örnek olarak sürekli verilerin girildiği bir banka veritabanı düşünebilirsiniz.



  • ETL(Extract-Transform-Load):Bir veri entegre sürecidir. Verinin source'dan  extract edilip transform'a uğratılarak target'a load etmektir
       
  • ODS(Operational Data Store):OLTP deki verinin yani ham verinin neredeyse az bir değişiklikle tutulduğu alandır(Tasarladığınız datawarehouse mimarisine göre veritabanı veya schema, olarak düşünebilirsiniz)

  • STAGE:Kaynak sistemlerden gelen verileri geçici bir alanda tutulur.Bu alanda tutulan veriler daha sonra veri ambarlarına aktarılır. Kaynak sistemlerden gelen verilerin direk veri ambarlarına aktarılması, veri aktarılırken olabilecek hatalar sonucunda veri ambarının yapısının bozulmasının neden olur hemde performans açısında iyi değildir
  • DATAWAREHOUSE:Kaynak sistemdeki verilerin raporlama için anlamlı hale getirilip tutulduğu sanal bir depodur


  • DATAMART:Datawarehouse'un  alt kümleridir. Datawahouse veriler üzerinde genel bir bakış sağlarken, datamart'lar sadece belirli bir kısma bakış sağlar. Datamart'lara belirli birimlerin ihtiyac duyduğu verilere bağlı olarak analiz yapmaya imkan sağlar ve datawarehouse'daki  tüm karmaşıklık ile uğraşmadan ilgili datamart'lar sayesinde daha kolay analiz yaparlar

 DATAMART  VS  DATAWAREHOUSE
          -Datawarehouse genelde bir çok veri kaynağında beslenir, datamart ise genelde tek bir veri                    kaynağında beslenir
          -Datawarehouse bir çok konu üzerinde analiz yapılması içi veriler bir araya getirilir, datamart'ta            ise tek bir konu analizi için veriler bir araya getirilir
          -Datawarehouse kurumsal kullanılır, datamart ise departmansal olarak kullanılır
          -Datawarehouse veri hacmi büyüktür, datamart'ın  ise veri hacmi küçüktür.


  • METADATA:Bir tablonun özetine denir yani bir tablonun kolon adları, her kolonun data tipi, tablo adı gibi bilgiler bir tablonun metada bilgisidir.
  • SCD(Slowly Changing Dimension):Kaynak sistemden elde edilen veriler, tarihsel olarak saklanarak hiç bir veri silinmez.
  • TRUCATE-LOAD:Kaynak sistemden elde edilen verilerin tümünün silinerek yeniden yapılandırılması
  • FACT TABLE:İş birimlerinin kullanacağı nümerik metrik değerleri içerir. Büyük miktarda veri içerir, genellikle dimension tablolar ile foreign key ilişkilidir, genellikle ekleme yapılır, çabuk büyür ve çok hızlı genişler
  • DIMENSION TABLE:İş birimlerinin görmek istediği metin tipindeki verileri içerir. boyutları küçüktür,  Truncate-Load mekanizmasına uygundur, genellikle statik veri içerir.











1 Mayıs 2017 Pazartesi

Batch Programlama Loops(Döngüler)

Merhabalar 
Bu ders batch programlamada kullanılan döngüleri içermektedir.
1-while döngü
syntax'ı
Set counters
:label
If (expression) (
Do_something
Increment counter
Go back to :label
)
Örnek döngü uygulaması
@echo off
SET /A "index=1"
SET /A "count=5"
:while
if %index% leq %count% (
echo The value of index is %index%
SET /A "index = index + 1"
goto :while
)
pause
Çıktı:
2-For döngüsü
List  syntax
FOR %%variable IN list DO do_something
Örnek:
@echo off
FOR %%F IN (1 2 3 4 5)
 DO
echo %%F
pause
Çıktı:

Aralık üzerinden döngü oluşturma
FOR /L %%variable IN (lowerlimit,Increment,Upperlimit) DO do_something
/L: döngünün aralıklarla oluştuğunu ifade etmek için kullanılır.
Örnek:
@ECHO OFF
FOR /L %%X IN (0,1,5) DO ECHO %%X
pause
Çıktı:
Dosya üzerinden döngü oluşturma
For /F ["opstions"]  %%parameter in (filenameset) do command
options:
tokens=n: tokens=5 olursa txt dosyasındaki her bir satırın 5.kelimesini gösterir. tokens1,5
olursa txt dosyasındaki her satırın 1.ve 5. kelimesini gösterir, tokens=1-5 olursa dosyadaki
herbir satırın 1,2,3,4,5. kelimesini gösterir.tokens=* olursa her satırdaki tüm kelimeleri
gösterir. 
skip=n:skip=1 olursa txt dosyasının başından 1. satırı göstermez, skip=2 olursa ilk 2 satırı
göstermez
delims=xxx: delims== olursa txt dosyasındaki  tüm "="'leri boşluk ile değiştiri. ";" olursa aynı şekilde boşluk ile değiştirir.
filenameset:Bir veya birden fazla dosya kümesi
parameter:Değiştirilebilir parametre
errorlevel: Eğer hiç bir data üretilmezse errorlevel 1 döner.





Batch Programlama if statements

Merhabalar,
Bu ders,  if ifadesini nasıl kullanıldığını içermektedir.. if ifadesinin genel kullanım sytax'ı aşağıdaki gibidir.
if(condition) do_something
İlk örneğimiz integer variable'ları kontrol etmek
@echo off
SET /A a=5
SET /A b=10
SET /A c=%a% + %b%
if %c% == 15 echo "The value of variable c is 15"
if %c% == 10 echo "The value of variable c is
pause
çıktı
Bu örnekte string variable kontrol etme işlemi
@echo off
SET str1=String1
SET str2=String2
if %str1% == String1 echo "The value of variable String1"
if %str2% == String3 echo "The value of variable c is String3"
pause
Çıktı:
if/else ifadesi:
If (condition) (do_something) ELSE (do_something_else)
İnteger variable'ları kontrol etme
@echo off
@echo off
SET /A a=5
SET /A b=10
SET /A c=%a% + %b%
if %c% == 15 (echo "The value of variable c is 15") else (echo "Unknown value")
if %c% == 10 (echo "The value of variable c is 10") else (echo "Unknown value")
pause
Çıktı:
if defined  ifadesi:
if defined some variable some command
@echo off SET
str1=String1
SET str2=String2
if defined str1 echo "Variable str1 is defined"
if defined str3 (echo "Variable str3 is defined") else (echo "Variable str3 is not defined")
pause
Çıktı:
if exist ifadesi
If exist somefile.ext do_something
@echo off
if exist C:\set3.txt (echo "File exists") else (echo "File does not exist")
pause
Çıktı:
Nested If Statements
if(condition1) if (condition2) do_something
@echo off
SET /A a=5
SET /A b=10
if %a% == 5 if %b% == 10 echo "The value of the variables are correct"
pause
Çıktı:
if goto statement
@echo off
SET /A a=5
SET /A b=10
if %a% == 5 goto :labela
if %b% == 10 goto :labelb
:labela
echo "The value of a is 5"
:labelb
echo "The value of a is 10"
pause
Çıktı:

Batch Programlama Variable

Merhabalar,
Bu ders batch programlada  değişken tanımlama için set komutu nasıl kullanıldığını içermektedir. Local ve global olmak üzere 2 tip değişken bulunmaktadır. Default olarak komut isteminde tanımlanan tüm değişkenler global'dır. Değişkenleri komut dosyanızda local yapmak için SETLOCAL komutu çağırılır. SETLOCAL komutu çağrıldıktan sonra değişkenler tanımlanır ve sonra ENDLOCAL ile değişken kullanımı belli bir alan ile sınırlandırılır. yani SETLOCAL ve ENDLOCAL arasında tanımlanan tüm değişkenler sadece bu iki komut arasında kullanılır.
Örnek 1:
@echo off
SETLOCAL
set x=true
echo x=%x%
endlocal
echo x=%x%
pause
Örnek 2:
@ECHO off
SET x=true
ECHO x = %x%
SETLOCAL
 SET x=false
 ECHO x = %x%
ENDLOCAL
echo x= %x%
pause
@echo off
title Variables
set /a toplam=2+2
echo 2+2= %toplam%
set /p deger=bir degisken girin
echo %deger%
pause
Yukardaki örnek kodun çıktısı aşaıdaki gibi
/a : Degisken ataması sırasında aritmetik işlemleri destekler.
/p: Değişken atamaları sırasında kullanıcıdan parametre alır.
@echo off
set /A a=5
set /A b=5
set /A c=%a%+%b%
echo %c%
set /A c=%a%-%b%
echo %c%
set /A c=%a%*%b%
echo %c%
set /A c=%a%/%b%
echo %c%
pause
Set komutunu bir stringin belli bir kısmını çıkarmak için aşağıdaki şekilde kullanılabilir.
@ECHO off
SET x=The sky above was quite gray
SET z=%x:~0,7%
ECHO %z%
pause
Aşağıda görüldüğü üzere ilk karakteri göstermektedir.

30 Nisan 2017 Pazar

Batch Programlamaya Giriş


Merhabalari
Bu ders batch programlamaya giriş niteliğinde örnekler içermektedir. ilk işlemimiz ekrana "Hello world!" yazmak. Bunun için  bir txt dosyasına aşağıdaki kodu ekleyin ve dosyasının uzantısını .bat yapın
@echo off
echo Hello world!
pause
Çıktı:
Yukardaki kodun sırayla açıklaması:
@echo off: Bu kodu eklemezsek .bat dosyasıının içindeki her kodu aşağıda görüldüğü üzere,  .bat dosyasını çalıştıran herkes görür
echo: Bu komut ekrana yazı yazdırmak için kullanılır C programlamadaki printf'e karşılık gelmektedir.
pause: Bu komut gelen ekranın kullanıcının onayı olmadan ekranı kapatmasını önlemek için kullanılır.Eğer komutu kullanmazsak .bat dosyasının içindeki işlemler sırayla tamamlandıktan sonra hemen kaybolur.
Batch programlamadan sık kullanılan komutlar
help: cmd ekranında bu komutu yazdığımızda .bat programlamada kullanılan komutları açıklamasıyla beraber listeler. Bir komutun nasıl kullanıldığını öğrenmek içinde kullanılır.
Örnek olarak
help for
help findstr
help rem
gibi
cls:Ekrandaki yazıyı siler
rem:.bat dosyası içine yorum satırı yazmak için kulllanılır.
exit:Bu komut, komut istemini sonlandırmak için kullanılır.
call:Bu komut .bat dosyasında başka bir .at dosyasını çağırmak için kullanılır.
tasklist:Bu komut, arkaplanda PID(işlem kimliği), oturum adı, bellek kullanımı ile birlikte şuanda çalışan tüm işlemleri görüntülemek için kullanılır.
taskkill: Bu komut local ve remote, belirtilen işlemi sonlandırmak için kullanılır.
title:Bu komut .bat dosyasının başlığı tanımlar.
@echo off
title Hello
echo Worlds
pause

tree: Dosya dizinleri tree şeklinde gösterir.
%time%:Mevcut saati gösterir.
color: Ekrandaki yazı rengini değiştirmek için kullanılır.
Kullanımı:
color 0
color 1
Environment Variable'lar

Örnek Kullanımı:
echo %CD%
echo %DATE%
gibi.

5 Şubat 2017 Pazar

Hadoop MapReduce

MapReduce, güvenilir ve hataya dayanıklı bir şekilde sıradan  sunuculardan oluşan geniş bir cluster üzerinde çok miktarda veriyi parallel olarak çalıştıran uygulamaları kolayca yazmak için kullanılan bir yazılım kütüphanesidir.

MapReduce framework(kütüphane)'ü 2 önemli task(görev)'i içerir.
  • Map
  • Reduce
Bir MapReduce job'ı, genellikle  girilen verilere bağımsız olarak block'lara ayırır ki bunlar parallel bir şekilde map task tarafında yürütülür. Framework(kütüphane), map'in çıktıklarını sort(sıralar) eder ve sonra reduce task ile girdileri azaltır(gruplar).

MapReduce iş akışı oluşturmak için 2 script yazmak gerekir, bunlar map ve reduce scriptleridir. Şimdi bir senaryo üzerinde MapReduce  uygulaması gerçekleştirelim

Senaryo:Yaygın olarak kullanılan wordcount uygulaması, yani HDFS'te bulunan bir file'daki kelimelerin kaç kez kullanıldığını gösteren MapReduce uygulaması.



Yukardaki MapReduce örneğinin scripti aşağıda yer almaktadır.

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class WordCount {

  public static class TokenizerMapper
       extends Mapper{

    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
      StringTokenizer itr = new StringTokenizer(value.toString());
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        context.write(word, one);
      }
    }
  }

  public static class IntSumReducer
       extends Reducer {
    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable values,
                       Context context
                       ) throws IOException, InterruptedException {
      int sum = 0;
      for (IntWritable val : values) {
        sum += val.get();
      }
      result.set(sum);
      context.write(key, result);
    }
  }

  public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    Job job = Job.getInstance(conf, "word count");
    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    FileInputFormat.addInputPath(job, new Path(args[0]));
    FileOutputFormat.setOutputPath(job, new Path(args[1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }
}


Yukardaki java kodunu kendi sisteminizde uygulamanız için aşağıdaki işlemleri sırasıyla yapmanız gerekemektedir.

1-Aşağıdaki ortam değişkenlilerini sistem set etmelisiniz

export JAVA_HOME=/usr/java/default
export PATH=${JAVA_HOME}/bin:${PATH}
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar

2-Yukarıda oluşturmuş olduğumuz wordcount java dosyasını compile(derlemek) edip ve jar dosyası oluşturmamiz gerekmektedir.

$bin/hadoop com.sun.tools.javac.main wordcount.java
$jar cf wc.jar wordcount*.class

3-Wordcount jar dosyası için input ve output diresctory'ları HDFS'te oluşturmamız gerekmektedir.
  • /user/sukru/wordcount/input - input directory in HDFS
  • /user/sukru/wordcount/output - output directory in HDFS

4-Input için HDFS'de  /user/sukru/wordcount/input directory'sinde 2 file(file01,file02) tanımladığımızı varsayalım. Aşağıdaki komutlarlar ile de dosya içeriğini görelim

$bin/hadoop fs -cat /user/sukru/wordcount/input/file01
Dear, Bear,River

$bin/hadoop fs -cat /user/sukru/wordcount/input/file02
Car,Car,River,Dear,Car,Bear

5-Şimdi uygulamayı çalıştıralım.
$bin/hadoop jar wc.jar wordcount /user/sukru/wordcount/input /user/sukru/wordcount/output


6-Uygulama çıktısını görelim.

$bin/hadoop fs -cat /user/sukru/wordcount/output/part-r-0000
Bear 2
Car 3
River 2
Dear 2






4 Şubat 2017 Cumartesi

Hadoop HDFS




HDFS'e Giriş

Hadoop Distributed File System(HDFS), sıradan sunucular üzerinde çalıştırılmak için tasarlanmış dağıtık dosya sistemidir. HDFS'de master and slave mimarisi mevcuttur.

  • Master:File System metadata'sını yönetmek için tek bir NameNode'tur.
  • Slave:Data'yı depolamak için birden fazla DataNode'tur.

Cluster üzerinde depolanmadan önce, HDFS'deki file'lar block(chunk)'lara ayrılır. Block boyutu varsayılan olarak 64MB veya 128 MB'tır. Bir file'a ait block  farklı node üzerinde store edilir.

Hadoop Daemon

Hesaplama terimlerinde daemon, arkaplanda çalışan process'tir. Hadoop'ta 5 tane vardır.
Bunlar;

  • NameNode
    • Bir block'u DataNode'a eşler.
    • File'a okuma/yazma erişimini kontrol eder.
    • Block'lar için replication(kopyalama) engine'i yönetir.
    • Client, DataNode ve SecondaryNameNode ile etkileşim halindedir.
    • File System Meta'sını yönetir.
NameNode'ta, Fsimage ve Editlog olmak üzere 2 tip dosya vardır. Fsimage, NameNode başlatıldığında dosya sisteminin o anki durumunu içerir. Editlog,NameNode başladıktan sonra dosya sisteminde oluşan değişikliklerdir.
  • SecondaryNameNode:Fsimage ve Editlog dosyasını periyodik olarak güncellemektedir. Bu sayede editlog dosyasının boyutu yönetilebilir boyut limitlerini geçmemektedir.
  • DataNode
    • Okuma, yazma isteklerinde(block oluşturma, silme ve kopyalama) sorumludur.
    • Data block'ları store(depolamak)  eder.
    • Client'tan gelen block'ları alır.

  • JobTracker(Resource Manager)
    • Kullanıcıdan gelen MapReduce task'ları kabul eder.
    • Gelen task'ı, taskTracker'a assing(atamak) eder ve status'ünü görüntüler.
  • TaskTracker(Node Manager)
    • MapReduce task'ları çalıştırır.
    • Hearbeat'i, JobTracker'e gönderir.
    • Job(İş) resource(kaynağını) HDFS'ten alır.
Her bir daemon, kendi sunucusu üzerinde bulunan JVM'te ayrı olarak çalışır.

Yazma


Okuma







HDFS Mimarisi


1 Şubat 2017 Çarşamba

Hadoop'a Giriş

Hadoop:

  • Apache'inin açık kaynaklı bir kütüphanesidir. 
  • İşlem hacmi büyük olan verileri depolamak ve analiz etmek için kullanılır
  • Java dili ile yazılmıştır.
  • Sıradan sunuculardan(commodit hardware) oluşan küme(cluster) üzerinde büyük verileri işlemeye yarar.
  • HDFS, Hadoop Common, Hadoop Yarn ve Hadoop MapReduce bileşenleri tarafından oluşan bir yazılımdır.

Hadoop'un Modülleri


  • HDFS(Hadoop Distributed File System)(Storage Layer): Hadoop cluster'larındaki verilere yüksek performanslı erişim sağlalayan dağıtılmış bir dosya sistemidir.  HDFS, master/slave mimarisi kullanır. Master, dosya sistemin metadata'sını yöneten tek bir NameNode'dan oluşur. Gerçek data'yı depolayan bir veya birden fazla slave, DataNodes. HDFS alanında bir dosya,  birkaç bloğa bölünür ve blok'lar bir  DataNode kümesinde depolanır. NameNode, blokların DataNode'lara eşleşmesini belirler. DataNode, dosya sistemi ile okuma ve yazma işlemlerini yapar. Ayrıca, NameNode'lar tarafından verilen talimatlara göre blok oluşturma, silme ve replikasyon konuları ile de ilgilenir. HDFS, diğer bir dosya sistemi gibi bir shell komutu kullanır ve dosya sistemi ile etkileşim sağlamak için komutlar listesi mevcuttur. 

    • Hadoop Yarn(Yet Another Resource Negotiator): Verileri tutan kümedeki işleri planlanlamak ve kaynak yönetimi sağlamak için bir yapı sağlar.
    • Hadoop MapReduce (Processing and Computation Layer): HDFS üzerindeki büyük verileri işlemek için kullanılan bir yöntemdir. İstediğinizi verileri filtrelemek için kullanılan Map fonksiyonu ve verilerden sonuç elde etmenizi sağlayan Reduce fonksiyonlarında oluşan program yazıldıktan sonra Hadoop üzerinde çalıştırılır. Hadoop Map ve Reduce'lerden oluşan iş parçacıklarını küme üzerinde dağıtarak aynı anda işlenmesini ve bu işler sonucunda oluşan verileri tekrar bir araya getirilmesinde sorumludur. 

    MapReduce terimi, aslında  Hadoop programlarını gerçekleştirdiği aşağıdaki 2 farklı task'ı ifade eder.
      • Map Task: İnput veriyi alır ve bir veri kümesine dönüştürür.

      • Reduce Task:Bu task'ta,  map task çıktısı girdi olarak alınır. Bu veri tuple(row)'larını daha küçük bir tuple grubunda birleştirir. Reduce task, her zaman, map task'ından sonra yapılır.

    Client Machine: Ne NameNode ne de DataNode'tur. Client machine üzerinde Hadoop yüklü olan bir makinedir.  MapReduce işlerini submit(göndermek) etmek ve tamamlandıktan sonra görüntülemek.

    JobTracker, yazılan MapReduce programının cluster üzerinde çalıştırılmasından sorumludur. Ayrıca dağıtılan iş parçacıklarının çalıştırılması sırasında oluşabilecek herhangi bir problemde o iş parçacığını sonlandırılması ya da yeniden başlatılmasından sorumludur. TaskTracker,  DataNode'ların bulunduğu sunucuda çalışır ve JobTracker'dan tamamlamak üzere  iş talep eder. JobTracker, NameNode'un yardımıyla DataNode'un local diskindeki veriye göre en uygun Map işini TaskTracker'a verir. Bu şekilde verilen iş parçacıkları tamamlanır ve sonuç çıktısı yine HDFS üzerinde bir dosya olarak yazılarak program sonlanır.

    • Hadoop Common: Bazı  modüllerin Hadoop'a erişebilmesi için gerekli olan kütüphaneleri sağlar. Mesela Hive yada HBase, HDFS'e erişmek için bu kütüphaneleri kullanılır. Bu java kütüphanesi Hadoop'u başlatmak için kullanılır. Cluster'a veri yüklemekle sorumludur.

    Hadoop Ecosystem



    • Oozie:Bütün işleri shcedule etmek için kullanılan bir tool'dur.
    • Sqoop:Klasik veritabanı ile HDFS arasında toplu veri transferi yapmayı sağlayan bir tool'dur.

    • Zookeeper:İşlerin sürekli çalışır halde kalmasını sağlayan bir takip sistemidir.
    • Oozie:Bütün işleri schedule etmek için kullanılan bir tool'dur. 

    • HBase:Dağıtık temelli kolon bazlı bir veritabanıdır.
    • Hive:Dağıtık yapılı bir veri ambarıdır. Sql benzeri bir dil sağlar.
    • Pig:Veri akışını kontrol eden ve büyük boyutlu verilerde işlem yapmayı kolaylaştıran bir tool'dur. HDFS ve MapReduce cluster'larında çalışır.
    • MapReduce:Yukarıda anlatılmıştır.
    • HDFS:Yukarıda anlatılmıştır.
    • Flume:Hadoop'a aktarılacak dosyaların(log datası, ftp dataları, twitter datası vs) toplanması ve aggregate edilmesi ve taşınmasını sağlayan bir java uygulamasıdır. Bu java uygulamasına'da agent denilmektedir.


    29 Ocak 2017 Pazar

    Oracle Data Integrator(ODI) Kavramları


    Soru    1 :ODI(Oracle Data Integrator) Nedir.
    Cevap 1 :Farklı sistemler arasında yüksek hızda veri taşımak için kullanılan ELT(Extract, Load ve Tranform) mimarisine sahip oracle tool'dur.




    Soru   2  :ODI'da model ne anlama gelmektedir.
    Cevap 2 :Data model, data server'da store edilmiş tablo veri yapısı grubuna karşılık gelmektedir. ODI topology sekmesinde tanımlanmış mantıksal bir şemaya dayanmaktadır ve sadece metadata bilgisini içermektedir.





    Soru   3 :ODI'daki repository tipleri nelerdir
    Cevap 3 :ODI'da 2 tip repository mevcuttur.

    • Master repository: Kurum yada kuruluşlar hakkında bilgilerinin tutulduğu  repository'dir. Şirketin IT kaynakları, güvenlik bildirimleri, veri modeli ve versiyonlama bilgileri tutulur.
    • Work Repository: Data model ve project'ler üzerinde bulunana bilgileri içeren bir veri yapısıdır. Repository ilişkisel bir veritabanı üzerinde depolanır. Bir master repository üzerinde birden fazla work repository oluşturulabilir ama bir work repository birden fazla master repository ile ilişkili olamaz. 
    Repository'i oracle veritabanı düşündüğümüzde aslında bir şemadır. Bu şema altında ODI repository'leri kurulduğunda kendisinin kayıt atacağı tabloları oluşturur.



    Soru     4 : ODI'da kaç tip variable var?
    Cevap  4 : Global ve project olmak üzere 2 tip variable vardır.

       Variable, ODI'da tek bir değeri depolayan bir object'dir. Bu değer string, number ve date olabilir. Bu variable, değeri  bir mantıksal şema üzerinde çalıştırılan sorgu sonucuna göre update olabilir. Örnek olarak database'den mevcut tarihi ve saati alabilir. Bir variable global olarak veya project içinde oluşturulabilir. Global variable tüm proje'lerde kullanılabilir ama project variable sadece oluşturulduğu projede kullanılabilir.


    Soru    5 :Variable'lar nerde kullanılır?
    Cevap 5 :Variable'lar tüm oracle data integrator expression'larında kullanılabilir. 
    • Mapping
    • Filters
    • Joins
    • Constraint
    Soru    6 :Oracle Data Integrator'da package nedir?
    Cevap 6 : Package, ODI'daki en büyük execution unit'tir yani bir package ile birden fazla işi tek seferde execute edilebilir Örnek olarak birden fazla mapping'i tek bir package'te aynı anda execut etme.


    Soru    7 : Load Plan nedir ve kaç tip load plan vardır?
    Cevap 7 : Load plan,  oluşturduğun scenario'ların execution'larını sırayla, paralel veya koşula bağlı olarak bir çok scenario'yu execute etmek veya çalıştırmak için bir process'tir.



    Soru     8 : ODI'da log level tipleri nelerdir ?
    Cevap  8 : Notification, error, warning, trace vb. 

    Soru     9 : ODI'da I$,  E$,  J$  ve C$ tabloları nedir?
    Cevap  9 : 
    • E$: ODI tarafından oluşturulan geçici bir hata tablosudur. Check Knowledge Module(CKM), tarafında oluşturulur. CKM'e takılan kayıtlar bu tabloya insert edilir.
    • J$: Tüm değişikliklerin kaydedildiği tablodur. Değişilik tipi(insert,update,delete) ile beraber değiştirilen kayıtları tutar Journalizing Knowledge Module tarafında oluşturulur. 
    • I$: Integration Knowledge Module(IKM) tarafında oluturulur. LKM,veriyi C$ tablosuna yükledikten sonra IKM, I$ tablosuna yükler.
    • C$:Loading Knowledge Module(LKM) tarafında staging area'da oluşturulur. Source'dan yüklenecek verileri geçici olarak tutar. 

    Soru    10 :Knowledge Module tipleri nelerdir?
    Cevap 10 : 
    • Reverse Enginering Knowledge Module (RKM):Bu modül, Source database'den tablo ve diğer objelerin metada bilgilerini okumak için kullanılır. 

    • Loading Knowledge Module (LKM): Source database'deki verileri,  staging area'ya yüklemek için kullanılır.
    • Integration(Load) Knowlege Module (IKM): Staging area'daki verileri target tablolara yüklemek için kullanılır.
    • Check Knowledge Module (CKM): Veri tutarlılığını kontrol etmek için kullanılır. 

    • Journalizing Knowledge Module (JKM):Değişikliği takip etmek için source database'den  veri değişikliklerinin(update, delete,insert) günlüğünü oluşturmak için kullanılır.


    Soru     11 : ODI Console nedir?
    Cevap  11 : Browser üzerinde designer, operator ve topology component'lerine erişmek için kullanılan web tabanlı bir navigator.


    Soru    12: ODI'daki component'ler nelerdir ve ne için kullanılır
    Cevap 12:

    • Designer  :Development
    • Operator  :Monitoring
    • Topology :Configuring
    • Security   :Provide security

    Soru    13 : Physical Schema, Logical Schema ve Context arasındaki ilişki nedir.
    Cevap 13 : Bu 3 kavramdan biri olmadan diğeri olmaz.




    Data Server: Database bağlantısını tanımlayan object'tir. Database instance'ı için user, password ve ip bilgisini depolar.

    Physcial Schema: 2 database schema'sı(Oracle tanımında) tanımlanır. Bu schema'lardan biri data'yı diğeri ise ODI işleri(I$ ve C$ tablolarının bulundüğu çalışma alanı) okumak için.

    Context : Bir enviroment(örnek prod, dev, test gibi) tanımlar. Kodu execute etmek için özel bir alan.

    Logical Schema: Logical bir yapı için bir alias'tır.



    Soru    14 : ODI'da scenario nedir?
    Cevap 14 : Bir package, mapping, variable veya procedure component'i bittiği zaman bir scenario'da derlenir.  Scenario, production için execution etme birimidir. scenario schedule edilebilir.