Aramayan Bulamaz
×
sql arama sorgusuna ait içerikleri görüntülemektesiniz.
MongoDB ve NoSQL Kavramı Nedir?

MongoDB bir NoSQL veritabanıdır. NoSQL "not only sql" olarak da açılabilir, yani SQL değil anlamındadır. Çünkü çalıştırılan sorgular bir MySQL ya da MsSQL sistemlerinde alışmış olduğunuz sorgular değiller.

NoSQL Sistemlerinin Avantajları Nelerdir?

Okuma ve yazma konusunda diğerlerine göre daha performanslı olabilirler.

Yatay olarak genişletilebilirler. Yani binlerce sunucu küme oluşturarak çalıştırılabilir ve daha büyük veriler üzerinde daha rahat işlem yapılabilir.

Farklı bir çok özellikleri olması sebebiyle programlama alanında kolaylıklar sağlar.

Maliyet olarak diğer veritabanı sistemlerine göre daha avantajlıdır.


NoSQL Sistemlerin Dezavantajları Nelerdir?

SQL bir veritabanı kullanan uygulamanın NoSQL sisteme taşınması ilk aşamada zor olacaktır. Özellikle join kullanan sorgularda düzenleme yapılması gerekecektir.

NoSQL veritabanı sitemleri veri güvenliği konusunda SQL veritabanlarındaki gibi gelişmiş bir yapıya sahip değiller.


MongoDB'de yukarıdaki dezavantajlarda bahsettiğim gibi güvenlik konusunda ilk kurulumda yetersiz kalmakta. Varsayılan olarak kullanıcı adı ve şifre bulunmamakta. Doğrudan sunucu adresini yazarak veritabanına bağlantı sağlanabilmekte. Bu sebeple veritabanı erişimini sunucu dışına kapatmak gerek ve MongoDB konfigurasyonlarını düzenleyerek kullanıcı yetkilendirmesini açmanız gerek. Kurulum ve konfigurasyonları sonraki konumda açıklayacağım.


MongoDB

10gen firması tarafından 2007 yılında başlanan ve 2009 yılında AGPL lisansıyla açık kaynak projesine dönüştürülen bir veritabanı sistemidir. Belge yönelimli veritabanı olarak tanıtılmaktadır. (Document oriented). MongoDB üzerinde oluşturulan her kayıt bir dökümandır. Bu dökümanlar json formatında saklanır.

MongoDB ve alışılagelmiş S

Plesk Panel Mysql Admin Şifresini Güncelleme

Plesk panel servisleri bir mysql veritabanı kullanarak çalışmaktadır. Plesk panele ait bilgiler, sunucuda ekli olan siteler ve o sitelerin özelliklerinin bir çoğu "psa" isimli veritabanında tutulmaktadır. Plesk panel psa isimli veritabanına admin kullanıcısı ile bağlanmaktadır. Bu admin kullanıcısının mysql şifresi değiştirilirse eğer Plesk panel girişinde bir hata mesajı ile karşılaşabilirsiniz ve erişim sağlayamazsınız. Aşağıdaki komutu SSH üzerinden çalıştırarak Plesk admin şifresini görüntüleyebilirsiniz.

# /usr/local/psa/bin/admin --show-password

Admin şifresi değiştirildiğinde bu komut çalıştırıldığında da hata alabilirsiniz. Aşağıdaki komutları çalıştırarak Plesk panel mysql admin şifresini tekrar düzeltebilir ve bu problemi çözebilirsiniz.

# export PSA_PASSWORD=buraya_şifreniz_gelecek # /usr/local/psa/admin/bin/ch_admin_passwd

PHP Data Object - PDO

PHP de veri tabanına bağlanma ve sorgu çalıştırmayı anlatmıştım.
Klasik veri tabanı bağlantısı mysql_connect() komutu ile yapılıyor, sorgu çalıştırma mysql_query() ile yapılıyor fakat pdo yapısı biraz farklı. PDO php 5.2 den sonra gelen bir veri tabanı sorgu sınıfı, yani nesne tabanlı bir yapı.
En güzel özelliği çoklu veri tabanı desteği olması. Oracle, SQL Server, MySQL gibi farklı veritabanlarına bağlanabilme özelliği sunuyor. Ayrıca kendi içerisinde sql injection koruması olan bir sınıftır.

$db = new PDO('mysql:host=localhost;dbname=veritabanı adı', 'kullanıcı adı', 'sifre'); PDO sınıfını db değişkenine bağlı olarak oluşturduk, sorgularımızı bu sınıfa bağlı methodlar ile yapacağız.

query() methodu genel olarak tüm sorgularda kullanılır.
exec() methodu bilgi girişi, güncelleme, silme gibi veri tabanına değer göndermede kullanılır.
prepare() methodu query() methodundaki gibi tüm sorguları çalıştırmada kullanılır fakat buna ek olarak bir de execute() methodu kullanılır, prepare ile yapılan sorgunun uygulanması için.
fetch() methodu; tek bir sonuç getirmek için kullanılır, query ile çalıştırılmışsa sorgu query den sonra, prepare ile çalıştırılmışsa sorgu execute methodundan sonra kullanılır.

Veritabanından dataların sayılarını getirmek istediğimizde fetch(PDO::FETCH_NUM) kullanılır.

Örnek olarak bir sorgu çalıştırayım, sorguyu query ile yapacağım. $sorgu = $db->query('select * from blog where id=1')->fetch(); Veritabanından id değeri 1 olan konuyu getiren sorguyu yazdık. Bu şekilde de yapabilirdik $sorgu = $db->query('select * from blog where id=1'); $sorgu->fetch(); İkisi de aynı işlemi yapıyor. echo $sorgu['blog_baslik'];
İ

Mysql\'de Kullanıcıları Konu Sayılarına Göre Listeleme

İki farklı tablomuz var, birinde açılan konular, diğerinde ise kullanıcılar.
Sistemde hangi kullanıcı konu açıyorsa o kullanıcının id bilgisi de konuların bulunduğu tabloda tutuluyor.
Konular Tablosunda
id, baslik, icerik, yayin, kullanici_id alanları var
Kullanıcılar Tablosunda
k_id, kullanici_adi, sifre, yetki alanları var

Biz yetki durumu 1,2 ve 3 olan kullanıcıları yayında bulunan konu sayılarına göre konu sayısı en fazla olan en üstte çıkacak şekilde göstermek istiyoruz.

Ben bunu çok uzun bir yöntemle yapmıştım, konuların bulunduğu yerden kullanıcı idlerini ve o kullanıcıların konu sayılarını ayrı ayrı alıp dizi değişkenine atayıp sıralayıp foreach ile döngüye sokup o şekilde sadece üç kullanıcı gelecek şekilde uzun sorgular topluğu şeklinde yapmıştım, daha kısa bir yöntem arıyordum ve Kerim Yılmaz (Ayazoğlu) kardeşim sayesinde çözdüm.

Tek bir sql sorgusu
select distinct(b.kullanici_id),k.kullanici_adi, (select count(id) from konular where kullanici_id=k.p_id) as toplam from kullanicilar kinner join konular b on b.kullanici_id=k.k_id where b.yayin=1 and k.yetki=1 or k.yetki=2 or k.yetki=3 order by toplam desc limit 3 sorguyu şu şekilde açıklayayım, tablo ilişkilendirmesi yaptık, bu konuda anlatmıştım tablo ilişkilendirmeyi, distinct ile veriyi tekrarsız çekiyoruz.
Konular tablosunda konusu olan kullanıcıları seçmiş olduk, ekran yazdırmak istediğimiz alanları seçtik sadece veritabanından, kullanici_adi, konu sayıları ve kullanıcı idleri.
select işlemi yaparken içerde parantez içinde bir select sorgusu daha kullandık, bura da count ile konuların sayılarını aldık ve hangi kullanıcının konu sayısını alacağımızı where koşuluyla belirttik daha sonra aldığımız bu sayıları toplam isimli bir alana aktardık ve toplam alanındaki değere göre tersten sıralayarak sadece 3 kişi gelecek şekilde kişileri seçmiş olduk.
sorguyu phpMyAdmin de çalıştırınca resimdeki g

Windows\'ta IIS Üzerinde PHP Çalıştırmak ve Url Rewrite Yapımı

Windows'ta IIS (Internet Information Services) üzerinde php çalıştırmak için yapmanız gerekenleri anlatacağım, IIS kurulu değilse ilk önce IIS'i kuruyoruz. Bunun için Denetim Masası => Programlar ve Özellikler => Windows Özelliklerini Aç veya Kapat seçeneğine giriyoruz, burada IIS'i bulup aktifleştiriyoruz ve kaydedip çıkıyoruz.













IIS kuruldu, şimdi PHP & Mysql ve php ile seo url yapabilmemiz için UrlRewrite eklentisini kuruyoruz. Hepsini tek tek kendi sitelerinden de indirebilirsiniz, fakat Microsoft'un yapmış olduğu Web Platformu Yükleyicisi aracıyla tüm bunları tek bir tıkla kurabiliyoruz. Web Platformu Yöneticisini indiriyoruz ve çalıştırıyoruz.











Ürünler sekmesine geçiyoruz



Bu ekranda;
IIS Express için PHP 5.4.9 Url Yeniden Yazma 2.0 MySQL Windows 5.1 bunları seçiyoruz ve yükle butonuna basıyoruz.



Mysql veritabanının root kullanıcısı için şifre belirliyoruz







Bu araçlar kurulurken diğer yandan mysql yönetim scripti olan phpMyAdmin scriptini indirip localhostumuzun bulunduğu dizine atalım.







Bileşenler kuruldu şimdi test edelim, phpMyAdmin paneline girebiliyorsak eğer php ve mysql kurulmuş ve ayarlanmış demektir.





Evet herşey sorunsuz.
IIS kurulumunu sanal bilgisayar üzerinden anlattım, çünkü normal bilgisayarda kuruluydu, şimdi anlatımın devamına normal bilgisayarımdan devam edeceğim.

IIS üzerine site eklemek için ilk önce siteler bölümüne gelip en sağda site ekle butonuna tıklamamız gerekmekte;



Port belirlememiz gerekli, 8890 belirledim ben siz istediğiniz bir numara belirtebilirsini