28 Eylül 2007

Newid Ve Newsequentialid Arasındaki Fark

NEWSEQUENTIALID SQL Server 2005 ile gelen yeni bir fonksiyondur.
Database'in GUID üretmesi için kullandığımız NewId ile, default değeri artan sayı olan durumların birleşimi olarak düşünebiliriz. Yani sıralı Guid üreten bir fonksiyon.
Bu fonksiyon sadece default değer olarak kullanılabilir. Kullanımı aşağıdaki şekildedir.

create table test(
colA uniqueidentifier DEFAULT NEWSEQUENTIALID(),
colB varchar(20)
)

insert into test (ColB) values ('aa')
insert into test (ColB) values ('bb')
insert into test (ColB) values ('cc')
insert into test (ColB) values ('dd')

eklemeleri sonucunda ColA varsayılan değer olarak aşağıdaki şekilde oluştu.

6EAF72CF-E96D-DC11-BD20-0011D8A6F316
6FAF72CF-E96D-DC11-BD20-0011D8A6F316
F0D309E7-E96D-DC11-BD20-0011D8A6F316
F817F4F1-E96D-DC11-BD20-0011D8A6F316

Fakat bu fonksiyon güvenlik gerektiren bir uygulamada kullanılamamalıdır. Çünkü değerler sıralı olduğu için kolayca tahmin edilebilir. Bu durumda NewId daha doğru bir tercih olacaktır.

24 Eylül 2007

And Operatörü ile Sorgulama

Veritabanı sorgulamalarında and ifadelerine sahip cümle grubunda 1. şartın sağlanmaması durumunda diğer şartlar kontrol edilmez. Bu durumda and ifadesi öğelerinde en hızlı çalışacak koşulu önce yazmak bize performans kazancı sağlayacaktır.

Örnek verecek olursak;

Bazı durumlarda bir değerin bulunan kayıta göre iki farklı alandan alındığı durumlar olabilmekte. Örneğin müşteri tablomuzda name,surname ve firmname isimli alanlar olsun.
Name ve surname alanları boşsa müşteri ismi firmname kolonundan alınsın.

Eğer biz A ile başlayan müşterileri sorgulamak istersek;

(name like 'A%' and firmname is null) or (firmname like 'A%' and name is null)

şeklinde yazabildiğimiz sorguyu ;

(firmname is null and name like 'A%' ) or (name is null and firmname like 'A%')

şeklinde yazarsak daha performanslı çalışır. Performans kazancı koşulların çok olduğu cümlelerde artacaktır.

19 Eylül 2007

Web 3.0 ve Servis Odaklı Mimari

Web 2.0. ın Ajax dışında kayda değer bir yazılım yeniliği getirmediğini, tasarım ve kullanıcı odaklı yeni yaklaşımlar olduğunu söyleyebiliriz. Web 3.0 da ise roller tamamen değişiyor. Web uygulama mimarisinin değiştiğini söylemek yanlış olmaz . Bir kaç yıldan beri sıkça duyduğumuz SOA (Servis odaklı mimari) kavramı Web 3.0 ın temeline yerleşiyor. Aslında Web 3.0 bir çok otorite tarafından bir web versiyonu olarak görülmüyor. Web sayfaları artık sistemin sadece bir arayüzü haline geliyor. Sistem tamamen servislerden oluşuyor. Amazon ve ebay canlı örneklerini verebiliriz. Şu anki yapıda, siz aynı altyapının sağladığı api veya web servisleri kullanarak kendi sitenizden satış yapabiliyorsunuz. Bunu mobil uygulamalara veya televizyondan satış gibi farklı ortamlara taşımak mümkün olacaktır. Bu süreç içerisinde amazon.com web sitesi de arayüzlerden biri haline geliyor. Yemeksepeti'nin Digiturk kanalından sipariş alma uygulamasını örnek verebiliriz. Uçuk örnek verecek olursak bir gıda perakendecisinin servislerini kullanarak buzdolabınızdan alışveriş yaptırması mümkün olabilir. Tabii ki kış aylarında pek tercih edilecek bir durum olmasa gerek :)

Burada bir parantez açmak gerekirse bunlar zaten hepimizin bir şekilde uyguladığı ve kullandığı yapılar. Web 2.0, Web 3.0 veya herhangi bir yaklaşımı sıfırdan oluşan şeyler olarak düşünmemek gerekiyor. Sadece benzer özelliklerin bir grupta toplanıp ortak standartların yakalanması olarak düşünebiliriz. Yoksa siz zaten web 2.0, web 3.0 veya herhangi bir standart özelliğini kullanıyor olabilirsiniz. Ayrıca uygulamanın sadece bir standart özellikleri de taşıması şart değil.

.net ve java web servisleri de aslında benzer bir ihtiyaç için çıkmıştı. Bir .net geliştiricisinin uygulamasının bir parçasını başka platformda uygulama geliştiren bir partiyle paylaşmasını sağlıyordu.


SOA kavramı ile beraber ikinci büyük yeniliğin semantic web olduğunu söyleyebiliriz. Semantic web, Hakia arama motoru ile bilinirlik kazanan mantıksal arama yaklaşımı. İçeriğin anlamını anlamaya odaklı bir yöntem. Klasik indeksleme ile bir web sayfası içerdiği kelimelere göre indekslenirken, bu yaklaşımda web dökümanının tümü düşünülerek bir indeksleme yapılmaktadır. Yani herhangi bir kelime, sadece gerçek anlamıyla değil bulunduğu konum itibariyle de anlamlandırılımaktadır. Semantic web için temel veri modeli olarak RDF (Resource Description Framework) kullanılabilir.

Bu arada .net versiyonlarının versiyon numarası ve özellik olarak web versiyonlarıyla beraber gitmesiyle Microsoft'un bu standartları kabul ettiği ve önem verdiği sonucunu çıkarabiliriz.

Başka bir açıdan bakarsak Web 2.0 aslında bir sosyal ağ patlaması yaratmıştı. Birbirine çok benzeyen ama kurgu olarak farklılık gösteren çok sayıda site geliştirildi. Web 3.0 'ın Web 2.0'ın içerik nimetlerinden faydalanıp veri analizi konusunda odaklanması muhtemel. Diğer taraftan SOA mimarisiyle daha çok iş ihtiyaçlarını karşılayacağını ve bu tarafta yeni açılımlar yaratacağını düşünüyorum.
Note:This picture has been taken from http://www.instamedia.org/ web site.

17 Eylül 2007

Oracle'da Triggerlar

Sql Server'da triggerlar sadece işlem yapıldıktan sonra çalışır.

Oracle'da BEFORE ve AFTER ek komutlarıyla triggerların tetikleme işleminden önce veya sonra olmasına karar verebiliriz.



Bu ek komutlar da iki durumda kullanılabilir.
İşlem bazında BEFORE ve AFTER ek komutları uygulanabilir.
Satır bazında BEFORE ve AFTER ek komutları uygulanabilir.

CREATE TRIGGER trigger_ismi
BEFORE DELETE OR INSERT OR UPDATE
ON tablo_ismi
{pl/sql kod bloğu}

15 Eylül 2007

Microsoft Terminolojisi

Microsoft'un işletim sistemleri ve özel uygulamalarında kullandığı stringlerin 28 dildeki karşılıklarını buradan indirebilirsiniz.

Bir kısmı sadece Microsoft'a özel kelime grupları olmakla beraber büyük bir kısmı uluslararası yazılım geliştiren firmalar için faydalı olacaktır. Aslında her yazılım üreten firma için en azından bir kaç dilde bir terminoloji hazırlamak uygulama kalitesini arttıracaktır. Özellikle sektör spesifik yazılım üreten firmalar için bu çok daha önemli.

14 Eylül 2007

Tafiti Arama Motoru


Microsoft Tafiti adıyla Silverlight teknolojisinin kullanımını göstermek amacıyla live search ile entegre çalışan bir arama motoru geliştirdi. Microsoft klasik bilinirlik arttırma yaklaşımıyla görsel öğeleri ön plana çıkarmış. Ayrıca sonuçların ağaç yapısı ile gelmesi ilginç bir özellik olmuş. Silverlight ile uygulama geliştirmenin .net geliştiricileri için bir avantaj olduğundan daha önce bahsemiştim. Bunlar iyi tarafları.

Fakat kullanıcı olarak bu arama motorununun Google'a alternatif olabileceğini zannetmiyorum.

Nedenleri;
* Arama motoru için görsellik ne kadar önemlidir?
* Live Search arama motoru ve Google ile arasında ciddi performans farkları var.
* 1 sn nin altı sonuçlar getiren bir uygulama için ilk sayfa açılışının bir kaç sn sürmesi ne kadar uygun.

Son olarak da eğer Google böyle bir siteyle çıksaydı acaba bu kadar yaygın kullanılabilir miydi?

Ben Microsoft'un bu girişiminin sadece Silverlight bilinirliğini arttırmaya yönelik olduğu kanısındayım.