02272017Pzt
Last updatePzt, 20 Şub 2017 11am


Yazılım


MongoDB ve Node.JS nedir?

Nedir MongoDB?

MongoDB ilişkisel olmayan yani NoSQL veritabanı. Peki ne demek bu ilişkisel olmayan? Yani düşünün ki veritabanı var, ama içinde ne tablo var, ne transactions (select, insert, update, delete gibi işlemler) var. Peki nasıl oluyor bu iş derseniz şöyle ki; MongoDB’yi benim anladığım JSON formatında verileri Array(dizi) olarak tutan bir veritabanı olarak düşünebiliriz. Yani bildiğimiz JSON formatı olduğu için çekilen verileri JSON teknikleri ile sayfaya dökebiliyoruz. Peki neden MongoDB derseniz, en önemli sebep kesinlikle HIZ. Popüler Big Data (Büyük Veri) işlemlerde büyük hız avantajı sağlıyor. Hız isteyenler ve büyük veri ile çalışanlar kesinlikle geçmeli yani. Bu bana MS Access’ten, MySQL’e geçtiğim zamanı hatırlattı. Zamanında Access yeterliyken, internet hızlandıkça, veriler arttı, bu oldukça da Access yetmemeye başladı ve Mysql’e geçildi. Aynı süreç henüz gerekmesede ileride MongoDB için yaşanabilir. Bunu ancak zaman gösterecek.

nodemongo

 

 

İkinci olarakta NodeJS ile devam edelim.

Nedir Node.js?

Node.JS sunucu tarafında çalışan(server-side) bir framework. Yani bir programlama dili değil. Amacı bir nevi sunucuda JS çalıştırmak. Bunu örnekle açıklarsam daha kolay olacak sanırım. Örneğin siz bir javascript kodu koyduğunuzda sitenize, kullanıcı sitenize girer ve tarayıcısı destekliyor ise o JS kodu çalışır ve işlemler gerçekleşir. Node.JS ise bunu sunucu tarafında yaparak kullanıcının Tarayıcısından bağımsız çalışmasını sağlıyor. PHP nasıl siteye her giren için aynı sonucu veriyor, sunucu üzerinde yorumlanıp sonuç herkese aynı sunuluyor ise buda öyle birşey. Bu sayede HTML5 ile dahada önem kazanan JS herkeste sorunsuz çalışır hale gelmiş oluyor. Node.JS’in bir diğer büyük avantajı ise HIZ. Apache, ISS vs gerektirmiyor. Node.JS kurduktan sonra, 3-4 satır kod ile HTTP server haline getirebiliyorsunuz bilgisayarınızı veya sunucunuzu.

Dikkatinizi çektiyse iki yeni teknolojide de HIZ vurgusunu yaptım. Katıldığım bir etkinlikte söylendiğine göre LinkedIn son tasarım değiştirdiğinde aynı zamanda Node.JS ve MongoDB ikilisine geçiş yapmış, trafiği 2 kat artmasına rağmen sayfa açılış hızı ise 5 kat artmış. Bu muhteşem bir fark.

2013 Yılının En Popüler Programlama Dilleri

2011 yılında ABD’de kurulan CodeEval, bünyesinde bulundurduğu 20 binin üzerindeki yazılımcıya çeşitli yarışmalar düzenleyerek şirketler için adeta alternatif bir kariyer platformu olarak öne çıkıyor.

Bu yazıda ise şirketin yaklaşık 25 bin yazılım geliştiriciden topladığı verilerle hazırladığı, 2013 yılının ‘en popüler programalama dilleri’ listesini sizlerle paylaşacağız.

Geçmişte çok sayıda farklı kaynak tarafından programlama dilleri popülariteye göre sıralanmıştı. Ancak CodeEval hem yazılımcılarla işverenleri bir araya getiren ve online bazı yarışmalar düzenleyen yapısıyla öne çıkıyor hem de aşağıda da görebileceğiniz gibi listede programlama dillerinin 2011, 2012 ve 2013 değerlerinin tamamı bulunuyor. Bu da ister istemez geriye dönük olarak çeşitli çıkarımlar yapmayı fazlasıyla kolaylaştıran bir etmen.

MongoDB Nedir?

mongodbMongoDB, 10GEN firması tarafından açık kaynak kodlu olarak geliştirilen, C++ programlama dili ile yazılmış, ölçeklenebilir, döküman tabanlı bir nosql veritabanı uygulamasıdır. Döküman tabanlı veritabanı türlerinin basitçe ne olduğu açıklamak gerekirse, verilerin JSON veri tipine benzer tarzda saklandığı veritabanları türleridir şeklinde ifade etmek anlamlı olacaktır. MongoDB, ilişkisel veritabanı yönetim sistemlerinin bazı özelliklerini de (indeksleme... gibi) içersinde barındırması sebebi ile diğer döküman tabanlı yönetim sistemlerine göre ön plana çıkmaktadır.

MongoDB, açık kaynak kodlu olması sebebi ile istenilirse kaynak kodlarına Github üzerinden ulaşabilmek mümkündür. MongoDB, genel olarak kullanılan işletim sistemlerinin (Linux, Windows,MacOS) tümünün üzerinde çalışabilmektedir.

MongoDB, hem 32 bit hem 64 bit sistemler üzerinde çalışabilme yeteneğine sahiptir. Fakat MongoDB tasarlayıcıları, kullanıcılara 32 bit modunda veritabanlarının 2 GB ile sınırlı olması sebebi ile 64 bit modunda çalışmalarını tavsiye etmektedir.

Arduino nedir ve ne değildir?

ArduinoArduino bir G/Ç kartı ve Processing/Wiring dilinin bir uygulamasını içeren geliştirme ortamından oluşan bir fiziksel programlama platformudur. Arduino tek başına çalışan interaktif nesneler geliştirmek için kullanılabileceği gibi bilgisayar üzerinde çalışan yazılımlara da (Macromedia Flash, Processing, Max/MSP, Pure Data, SuperCollider gibi) bağlanabilir. Hazır üretilmiş kartlar satın alınabilir veya kendileri üretmek isteyenler için donanım tasarımı ile ilgili bilgiler mevcuttur.

Arduino kartları bir Atmel AVR mikrodenetleyici (Eski kartlarda ATmega8 veya ATmega168, yenilerinde ATmega328) ve programlama ve diğer devrelere bağlantı için gerekli yan elemanlardan oluşur. Her kartta en azından bir 5 voltluk regüle entegresi ve bir 16MHz kristal osilator (bazılarında seramik rezonatör) bulunur. Mikrodenetleyiciye önceden bir bootloader programı yazılı olduğundan programlama için harici bir programlayıcıya ihtiyaç duyulmaz.

Agile Konferansı 27 Eylül'de İstanbul'da

agile turkeyKar amacı gütmeyen Agile Turkey topluluğu; agile yaklaşımları uygulayan dünyanın önde gelen şirketlerinden profesyonelleri ve konusunda uzmanlaşmış konuşmacıları İstanbul?da bir araya getiriyor.

Agile Turkey Summit 2013 etkinliği, 27 Eylül Cuma günü Mövenpick Hotel/İstanbul?da düzenlenecek.

Yazılım geliştirme sürecinde uzun vadeli planlar yapıp harfi harfine o planlara uymaktansa daha esnek hareket etmek ve gelişmelere göre sık aralıklarla yeni versiyonlar yayınlamaya dayalı olan agile/çevik yazılım kavramı; altında çok sayıda uzmanlık alanı ile detaylı konu başlıkları barındırıyor. Kısaca agile yazılım kavramı için yazılım geliştirme süreci yaşayan tüm şirketlerin ilgisini çeken bir yazılım metodolojisi tarifini yapabiliriz.

Agile Turkey Summit 2013; sadece Türkiye içinde değil yakın coğrafyalarda da zengin içeriği ve önemli konuklarıyla dikkat çekiyor. Etkinlikte; Salesforce.com, ING Bank, IBM ve Avea gibi şirketlerin yetkilileri konuşmacı olarak yer alıyor. Programın tamamına ise şuradan ulaşabilirsiniz.

Open ofis 4.0 çıktı ( ücretsiz)

open office 40Apache'nin ücretsiz ofis paketi OpenOffice'in dördüncü sürümü çıktı. 3.4 sürümünün üzerine bir hayli yenilik getirdiği gözlenen OpenOffice 4.0'da göze çarpan en büyük değişiklik IBM'in Lotus Symphony paketinden alınma bir yan görev çubuğu. Dört farklı ebatta gelen yan görev çubuğu ile günümüzde standart hale gelen genişekran monitörlerde ofis yazılımı kullanımında verim artışı hedeflenmiş.

Microsoft Office dosya türlerine verilen desteğin iyileştirildiği OpenOffice 4.0'ın içerdiği 500'ün üzerinde yenilik arasında grafik konusunda iyileştirmeler, geliştirilmiş dil destekleri ve yeni bir baskı önizleme fonksiyonu da bulunuyor.

Açık kaynak felsefesine dayalı ve tamamen ücretsiz olan OpenOffice'in 3.4 sürümü 57 milyon indirilme sayısına ulaşmıştı.

Open office 4.0 alıştığınızda Microsft ofis i aratmayacak bir yazılım.

İndirmek için : http://www.openoffice.org/download/

12c: Oracle Veritabanı Yeniden Yapılanıyor

gokhanatilOracle, veritabanı yazılımının yeni sürümü olan 12c?yi 25 Haziran?da piyasaya sürdü. Hiç kuşkusuz 12c, Oracle?ın son on yılda üzerine en çok konuşulan veritabanı sürümü oldu. Bunun iki önemli sebebi var. Birincisi, Oracle 12c?nin, yaklaşık 8 ay önce Open World?de Larry Ellison tarafından tanıtılmasıyla başlayan uzun bekleme süreci. Resmi olarak duyurulmasından sonra, Oracle kullanıcıları merakla bu sürümün gelmesi beklediler. Sosyal ortamda ürünle ilgili her haber, her söylenti hızlıca yayıldı ve beklentilerin artmasına sebep oldu. Daha ürün yayınlanmadan çeşitli paylaşım sitelerinde ilgili haberler, getireceği yeniliklerle ilgili demonstrasyonlar yayınlandı.
İkinci sebep, 12c?nin kendinden önceki Oracle sürümlerinin hiç birinde olmadığı kadar fazla geliştirmeyle gelmesiydi. Özellikle ?Oracle Multitenat? ile veritabanı mimarisinine getirdiği farklı yaklaşım, 12c?yi önceki sürümelerden ayırdı.

Oracle 12c Neler Getiriyor?

12c?nin basın açıklamasında, yeni veritabanının 2500 insan/yıl çalışma, 1.2 milyon saat test sonucunda 500 yeni özellikle birlikte geldiği vurgulanıyor. Ben bunlardan en önemli gördüklerimi derlemeye çalışınca ortaya bu liste çıktı:

1) Identity Kolonu:

Yıllardır Oracle kullanan yazılımcılar, sequence-trigger-performans problemleri üçgeninde boğuşmaktaydılar. Bu sorunu çözmek için 12c, bir çok veritabanında örneği bulunan otomatik sayı üretime özelliği ile geliyor. Şu şekilde yapılan bir tablo tanımı ilgili kolonun otomatik olarak sayı almasını sağlayacak:

Kullanılan teknoloji hala Oracle?ın sequence yapısını temel alsa da, elde edilen performans, sequence ve trigger ikilisinin kullanımından kat ve kat daha verimli.

2) 32k?lık Veri Tutabilen Varchar2/Nvarchar2

Yazılımcıların pek çok kez karşısına çıkan ve onları CLOB gibi pratik olmayan çözümlere iten VARCHAR2 ve NVARCHAR2?nin 4000 byte sınırlaması, 12c ile 32767 byte?a çıkarılıyor. Ama bu özellik varsayılan olarak aktif değil, aktif etmek istiyorsanız önce veritabanını UPGRADE modda açıp, MAX_STRING_SIZE parametresini EXTENDED olarak set etmeniz ve sonrasında ?/rdbms/admin/utl32k.sql? scritpini çalıştırmanız gerekiyor. Bu işlemi geri almanın mümkün olmadığına dikkat edin.

3) Top N ve Sayfalama Sorguları

Son kullanıcıya verileri listelerken yazılımcıların sıklıkla kullandığı ilk 10 kaydı getir, 20?şer 20?şer gelsin gibi sorgular daha önce WINDOW fonksiyonları veya ROWNUM ile yapılıyordu. Artık çok daha basit olarak bu yapılabiliyor:

Eğer sayfalama yapmak istiyorsak OFFSET ve NEXT ile şuna benzer sorgular yazabiliyoruz:

4) Online Veri Dosyası (Datafile) Taşınması

Daha önce tablespace?i offline?a çekip, işletim sistemi komutlarıyla kopyalama yaptığımız dosya taşıma işlemleri artık online olarak yapılabiliyor:

Bu özellikle veritabanın kesintisiz hizmet vermesi açısından önemli bir özellik. İşlem normal dosya sisteminden ASM?e dosya transferini destekliyor.

5) Temporary Tablespace?in Redo Üretmemesi

Artık daha çok yazılımcı, global temporary tableları yani ?geçici tabloları? kullanıyor. Bu tablolarda yapılan işlemlerin recovery?ye ihtiyaç duymadığı için REDO üretmemesi beklenirken, temporary tablespace üzerinde yapılan her işlem undotable space?de ?undo? kayıtları ürettiği için bu undo kayıtlarının redo?su üretilmekteydi. 12c ile artık temporary tablespace üzerinde yapılan işlemlerin undo bilgisi, undo tablespace yerine temporary tablespace?de tutulabiliyor. Bu da bu işlemler için REDO üretimi ihtiyacını ortadan kaldırıyor. Aktive etmek için:

6) Partial Indexing on Partitioned Tables

Pek çok kez, sadece bir partition da yapılacak sorguları hızlandırmak adına o partition için index oluşturmaya ihtiyaç duymuşuzdur. 12c, partition ile ilgili birçok geliştirmeyle geliyor bunlardan biri de sadece istenilen/seçilen partitionlar üzerinde index oluşturulabilmesi. Bunun için, index oluşturulmamasını istediğiniz partitionların ?indexing? parametresini ?off? olarak belirleyip, oluşturacağınız indexin ?partition? olduğunu belirtmeniz yeterli:

Partitioning ile ilgili yenilikler bununla sınırlı değil, online olarak partition taşıma, tek SQL sorgusu ile birden fazla partition ekleyebilme gibi daha bir çok geliştirme yapılmış.

7) Automatic Data Optimization

Veritabanı Uzmanından beklenen görevlerden biri, verilerin farklı performans karakteristiklerine sahip storagelara doğru dağıtılmasını sağlayarak kaynakların verimli kullanımını sağlamaktır. Heat-map özelliği aktif edildiğinde, Oracle verilerin erişimini ?veri bloğu? seviyesinde takip etmeye başlıyor. Automatic Data Optimization, heat map tarafından toplanan verilere ve sizin belirlediğiniz politikalara göre bu veri bloklarının, farklı storage yapılarına taşınmasını ve taşınırken istenirse sıkıştırılmasını sağlanabiliyor.

8) Adaptive Execution Plan

Bir veritabanını diğerlerinden ayıran pek çok kriter olabilir ama sanırım en önemlilerinden biri hiç kuşkusuz ?optimizer? mekanizmasıdır. Veritabanına yolladığınız her sorgu için ?optimizer?, en iyi yürütme planı seçmeye çalışır ve böylece sorguların en hızlı şekilde sonuçlanmasını sağlar. Oracle 12c ile gelen Adaptive Execution Plan özelliği, sorgu çalışırken veri kümelerinden gelen veri miktarı gözetilerek daha iyi bir ?yürütme planının? seçilebilmesine olanak sağlıyor. Bu özellikle tablo/index istatistiklerin verinin karakterini doğru yansıtamadığı durumlarda bir kurtarıcı olabilir.

9) Flex ASM

Oracle 10g ile tanıştığımız ASM (Automatic Storage Management), aradan geçen yaklaşık 10 yıl içinde sadece RAC değil stand-alone veritabanı sunucuları için de tercih edilen bir yapı haline geldi. Oracle 12c ile gelen Flex ASM, ASM?in birden fazla sunucuda cluster şekilde çalışmasını sağlıyor. Her hangi bir ASM instance?ı fail etmesi durumunda diğer ASM instanceları hizmet vermeye devam ediyor. Bu yapı hem ASM?nin single point of failure yapısından kurtarıyor, hem de yük dengelemesi yapılabilmesini sağlıyor.

10) Oracle Multitenant

Oracle 12c, veritabanı yapısında köklü bir değişikliğe giderek artık, container veritabanı (CDB) içinde pluggable veritabanı (PDB) olarak adlandırılan alt veritabanları kullanımını desktekliyor. Gün geçtikçe popülerleşen bulut mimari ve sunucu konsolidasyonu açısından çok önemli olan bu özellik, şema bazlı çözümler yerine daha efektif ve güvenli bir alt yapı sunuyor. Oracle Multitenant, yama yönetimi, veritabanı kopyalama gibi görevler için de büyük kolaylıklar sağlıyor. Örneğin tek SQL ile veritabanının kopyası alınabiliyor:

Bu liste elbette ki tüm yenilikleri içermiyor, ama bu özellikler bile Oracle 12c?nin önceki sürümlerinden ne kadar farklı olduğunu gösteriyor. Bu sürümle birlikte, veritabanı kullanıcılarının genel prensibi olan, ?Release 2 sonrası yeni sürüme geçme alışkanlığı? kırılabilir ve yakın zamanda canlı ortamlarında 12c?yi görmeye başlayabiliriz.

Gökhan ATIL

http://www.gokhanatil.com

FACEBOOK'TA TAKİP EDİN