{"id":1848,"date":"2022-10-15T09:26:01","date_gmt":"2022-10-15T09:26:01","guid":{"rendered":"https:\/\/sunucucozumleri.com\/?p=1848"},"modified":"2022-10-15T09:26:52","modified_gmt":"2022-10-15T09:26:52","slug":"ludicrousdb-ve-hyperdb-ile-wordpress-icin-coklu-veritabanlarini-kullanma","status":"publish","type":"post","link":"https:\/\/sunucucozumleri.com\/blog\/ludicrousdb-ve-hyperdb-ile-wordpress-icin-coklu-veritabanlarini-kullanma\/","title":{"rendered":"LudicrousDB ve HyperDB ile WordPress i\u00e7in \u00c7oklu Veritabanlar\u0131n\u0131 Kullanma"},"content":{"rendered":"<p>WordPress ile ya\u015fan\u0131lan en b\u00fcy\u00fck sorunlardan biri veritaban\u0131. <a href=\"https:\/\/sunucucozumleri.com\/blog\/sunucu\/fiziksel-sunucu\/\">Fiziksel sunucu<\/a> veya <a href=\"https:\/\/sunucucozumleri.com\/blog\/sunucu\/sanal-sunucu\/\">sanal sunucu<\/a> yada <a href=\"https:\/\/sunucucozumleri.com\/hosting\/fast-wordpress-hosting\/\"><strong>wordpress hosting<\/strong><\/a> kullan\u0131m\u0131ndan ba\u011f\u0131ms\u0131z olarak \u00dczerinde ne kadar \u00e7ok veri kaydedilirse, o kadar yava\u015flar ve t\u00fcm web sitesi ve kullan\u0131c\u0131 deneyimi \u00fczerinde k\u00f6t\u00fc etkileri olur ve bu da ziyaret\u00e7i ve kullan\u0131c\u0131 say\u0131s\u0131nda b\u00fcy\u00fck bir d\u00fc\u015f\u00fc\u015fe neden olur. Peki, onu bir \u0130svi\u00e7re saati gibi \u00e7al\u0131\u015ft\u0131rmak i\u00e7in ne yapabiliriz? Bu sorunu ararsan\u0131z, size daha az eklenti kullan\u0131n, DB&#8217;yi bir eklenti ile optimize edin, CDN kullan\u0131n[tamamen alakas\u0131z], \u015funu yap\u0131n, \u015funu yap\u0131n vb. \u015feyler anlatan bir\u00e7ok makale bulacaks\u0131n\u0131z. Tamam, bunlar iyi ama WordPress&#8217;inizi neyin daha harika hale getirebilece\u011fini biliyor musunuz? Tek bir WordPress web sitesi i\u00e7in birden \u00e7ok veritaban\u0131 kullanma. EVET, do\u011fru okudunuz. Burada size birden fazla DB&#8217;yi bir WP web sitesine nas\u0131l ba\u011flad\u0131\u011f\u0131m\u0131 g\u00f6stermek istiyorum ve sonu\u00e7 olarak ayn\u0131 anda \u00e7ok say\u0131da kullan\u0131c\u0131y\u0131 idare edebildik ve herkesi daha mutlu ettik. Hadi gidelim.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>HyperDB veya LudicrousDB?<\/strong><br \/>\nHyperDB, birka\u00e7 WordPress yerle\u015fik veritaban\u0131 i\u015flevinin yerini alan \u00e7ok geli\u015fmi\u015f bir veritaban\u0131 s\u0131n\u0131f\u0131d\u0131r. \u0130ste\u011fe ba\u011fl\u0131 say\u0131da veritaban\u0131 sunucusuna ba\u011flanabilir.<\/p>\n<p>\u015eunlar\u0131 destekler:<\/p>\n<p>1- Okuma ve yazma sunucular\u0131 (replikasyon)<br \/>\n2- Okuma ve yazma i\u00e7in yap\u0131land\u0131r\u0131labilir \u00f6ncelik<br \/>\n3- Yerel ve uzak veri merkezleri<br \/>\n4- \u00d6zel ve genel a\u011flar<br \/>\n5- Farkl\u0131 veritabanlar\u0131nda\/ana bilgisayarlarda farkl\u0131 tablolar<br \/>\n6- Ak\u0131ll\u0131 yazma sonras\u0131 ana okumalar<br \/>\n7 &#8211; D\u00fc\u015fen ana <a href=\"https:\/\/sunucucozumleri.com\/blog\/bilgisayar-nasil-kullanilir\/\">bilgisayar<\/a> i\u00e7in y\u00fck devretme<br \/>\n8- Profil olu\u015fturma i\u00e7in geli\u015fmi\u015f istatistikler<br \/>\n9- WordPress Multisite<\/p>\n<p>Birden \u00e7ok veri merkezine yay\u0131lan bir\u00e7ok MySQL sunucusuyla WordPress.com&#8217;da \u015fu anda \u00fcretimde kullan\u0131lan kodu temel al\u0131r.<\/p>\n<p>HyperDB, Otomatik taraf\u0131ndan olu\u015fturulmu\u015ftur ancak bir s\u00fcredir g\u00fcncellenmemektedir ve bu nedenle baz\u0131 kullan\u0131c\u0131lar i\u00e7in d\u00fczg\u00fcn \u00e7al\u0131\u015fmayabilir[Belki sizin i\u00e7in \u00e7al\u0131\u015fabilir]. Peki alternatif nedir? g\u00fcl\u00fcn\u00e7DB !<\/p>\n<p>LudicrousDB, Automattic&#8217;in HyperDB eklentisine dayal\u0131 olarak \u00e7o\u011faltma, y\u00fck devretme, <a href=\"https:\/\/sunucucozumleri.com\/blog\/yuk-dengeleme-nedir\/\">y\u00fck dengeleme<\/a> ve b\u00f6l\u00fcmlemeyi destekleyen WordPress i\u00e7in geli\u015fmi\u015f bir veritaban\u0131 arabirimidir.<\/p>\n<p>Okurken, WordPress DB ile \u00e7ok \u015fey yapabilirsiniz. Bu y\u00f6ntemde WP&#8217;yi 2 veritaban\u0131na ba\u011flayaca\u011f\u0131z ve baz\u0131 tablolar\u0131 bir denge olu\u015fturacak ve web sitesini y\u00fcksek trafik saatlerinde a\u00e7\u0131k tutacak \u015fekilde ba\u015fka bir veritaban\u0131na ta\u015f\u0131yaca\u011f\u0131z.<\/p>\n<p>Not: Prosed\u00fcr hem LudicrousDB hem de HyperDB i\u00e7in hemen hemen ayn\u0131d\u0131r. Yani LudicrousDB ile \u00e7al\u0131\u015fmay\u0131 \u00f6\u011frenirseniz HyperDB ile de \u00e7al\u0131\u015fabilirsiniz.<\/p>\n<p><strong>LudicrousDB Nas\u0131l \u00c7al\u0131\u015ft\u0131r\u0131l\u0131r<\/strong><br \/>\n1- Ba\u015flamak i\u00e7in Github sayfas\u0131ndan LudicrousDB&#8217;yi indirin ve \u201c Add Plugin \u201d sayfas\u0131ndan WordPress paneline y\u00fckleyin .<\/p>\n<p>2- Eklentiyi kurduktan sonra aktif etmeyin. \/wp-content\/plugins\/ludicrousdb\/ludicrousdb\/drop-ins\/ dizininden db.php dosyas\u0131n\u0131 kopyalay\u0131n ve wp-content dizinine yap\u0131\u015ft\u0131r\u0131n .<\/p>\n<p>3- Ayn\u0131 yoldan db-config.php dosyas\u0131n\u0131 bulun ve wp-config.php dosyas\u0131n\u0131n bulundu\u011fu WordPress dizininizin k\u00f6k dizinine kopyalay\u0131n .<\/p>\n<p>Art\u0131k ihtiyac\u0131m\u0131z olan t\u00fcm dosyalar kuruluma haz\u0131r. WP DB&#8217;yi yap\u0131land\u0131rman\u0131n zaman\u0131 geldi. Eri\u015fim i\u00e7in gerekli t\u00fcm bilgileri i\u00e7eren yeni bir sunucuda ba\u015fka bir veritaban\u0131n\u0131z oldu\u011funu varsay\u0131yorum.<\/p>\n<p>4- WP k\u00f6k\u00fcnde db-config.php dosyas\u0131n\u0131 a\u00e7\u0131n ve a\u015fa\u011f\u0131daki kodlar\u0131 g\u00f6rmek i\u00e7in dosyan\u0131n sonuna gidin:<\/p>\n<p><code><br \/>\n\/\/ A<br \/>\n$wpdb-&gt;add_database( array(<br \/>\n'host'     =&gt; DB_HOST,<br \/>\n'user'     =&gt; DB_USER,<br \/>\n'password' =&gt; DB_PASSWORD,<br \/>\n'name'     =&gt; DB_NAME,<br \/>\n) );<br \/>\n\/\/ B<br \/>\n$wpdb-&gt;add_database( array(<br \/>\n'host'     =&gt; DB_HOST,<br \/>\n'user'     =&gt; DB_USER,<br \/>\n'password' =&gt; DB_PASSWORD,<br \/>\n'name'     =&gt; DB_NAME,<br \/>\n'write'    =&gt; 0,<br \/>\n'read'     =&gt; 1,<br \/>\n'dataset'  =&gt; 'global',<br \/>\n'timeout'  =&gt; 0.2,<br \/>\n) );<br \/>\n<\/code><br \/>\nG\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi add_database ile istedi\u011finiz kadar veritaban\u0131 ekleyebilirsiniz. Ama parametreler nelerdir?<\/p>\n<p><code><br \/>\nana bilgisayar : DB sunucusu. DB ayn\u0131 sunucudaysa, yerel ana bilgisayar olmal\u0131d\u0131r ve ba\u015fka bir sunucudaysa, ba\u011flant\u0131 noktas\u0131 numaras\u0131yla birlikte IP adresini veya etki alan\u0131 ad\u0131n\u0131 kullan\u0131n. IP-ADDRESS:PORT \/ Varsay\u0131lan port 3306'd\u0131r. (gerekli)<br \/>\nkullan\u0131c\u0131: DB kullan\u0131c\u0131 ad\u0131 (gerekli)<br \/>\n\u015fifre: DB \u015fifresi (gerekli)<br \/>\nisim: DB ismi (gerekli)<br \/>\nyaz: WP bu DB'ye yazabilir mi? Evet = 1, Hay\u0131r = 0 \/ Varsay\u0131lan 1'dir (iste\u011fe ba\u011fl\u0131)<br \/>\noku: WP bu DB'den veri okuyabilir mi? Evet = 1, Hay\u0131r = 0 \/ Varsay\u0131lan 1'dir (iste\u011fe ba\u011fl\u0131)<br \/>\nveri k\u00fcmesi: DB \/ Default'daki bir grup tablo i\u00e7in yaln\u0131zca bir ad 'global' (iste\u011fe ba\u011fl\u0131)<br \/>\nzaman a\u015f\u0131m\u0131: Ba\u011flant\u0131 zaman a\u015f\u0131m\u0131 \/ Varsay\u0131lan 0,2'dir (iste\u011fe ba\u011fl\u0131)<br \/>\n<\/code><br \/>\n5- Bu kodun ilk k\u0131sm\u0131 WP&#8217;yi ana DB&#8217;ye ba\u011flamak i\u00e7indir. Bu y\u00fczden a\u015fa\u011f\u0131daki kodu oldu\u011fu gibi b\u0131rak\u0131yoruz ve yap\u0131land\u0131rmas\u0131 basit olan ba\u015fka bir sunucuda olmad\u0131\u011f\u0131 s\u00fcrece herhangi bir de\u011fi\u015fikli\u011fe gerek yok.<\/p>\n<p><code><br \/>\n\/\/ Bir<br \/>\n$wpdb-&gt;add_database( array(<br \/>\n'host' =&gt; DB_HOST,<br \/>\n'user' =&gt; DB_USER,<br \/>\n'password' =&gt; DB_PASSWORD,<br \/>\n'name' =&gt; DB_NAME,<br \/>\n) );<br \/>\n<\/code><br \/>\n6- Kodumuzun ikinci k\u0131sm\u0131n\u0131 kullanarak ba\u015fka bir DB ekleyelim.<\/p>\n<p><code><br \/>\n\/\/ B<br \/>\n$wpdb-&gt;add_database( array(<br \/>\n'host' =&gt; db.example.com:3306,<br \/>\n'user' =&gt; testserver,<br \/>\n'password' =&gt; 5kjh4k8#$#@%9,<br \/>\n'name' =&gt; secondDB ,<br \/>\n'write' =&gt; 1,<br \/>\n'read' =&gt; 1,<br \/>\n'dataset' =&gt; 'wpposts'<br \/>\n) );<br \/>\n<\/code><br \/>\nKolay de\u011fil mi? Varsay\u0131lan de\u011fer benim i\u00e7in iyi oldu\u011fu i\u00e7in zaman a\u015f\u0131m\u0131 parametresini yeni kald\u0131rd\u0131m . Ama isterseniz ekleyip de\u011fi\u015ftirebilirsiniz.<\/p>\n<p>Art\u0131k WP&#8217;miz 2 DB&#8217;ye ba\u011fl\u0131 oldu\u011fundan, baz\u0131 tablolar\u0131m\u0131z\u0131 ana DB&#8217;den 2. DB&#8217;ye ta\u015f\u0131mak ve WP&#8217;ye 2. DB&#8217;den veri okumas\u0131n\u0131 ve yazmas\u0131n\u0131 s\u00f6ylemek istiyoruz. Bu \u00f6rnekte bu tablolar, WP&#8217;nin g\u00f6nderileri ve meta verileri depolad\u0131\u011f\u0131 yerdir.<\/p>\n<p>7- PHPMyadmin kullanarak wp_posts ve wp_postmeta tablolar\u0131n\u0131 ana DB&#8217;den d\u0131\u015fa aktar\u0131n ve 2. DB&#8217;ye aktar\u0131n. (Testlerden sonra bu tablolar\u0131 b\u0131rakabilirsiniz)<\/p>\n<p>8- \u015eimdi add_callback&#8217;e ihtiyac\u0131m\u0131z var. add_callback ile WP tablolar\u0131n\u0131 filtreliyoruz ve WP&#8217;ye bu tablolar\u0131n verilerini 2. tablodan okumas\u0131n\u0131 ve yazmas\u0131n\u0131 s\u00f6yl\u00fcyoruz.<\/p>\n<p><code><br \/>\nglobal $wpdb;<br \/>\n$wpdb-&gt;add_callback( 'db_callback' );<br \/>\nfunction db_callback( $query, $wpdb ) {<br \/>\nif ( $wpdb-&gt;base_prefix . 'posts' == $wpdb-&gt;table || $wpdb-&gt;base_prefix . 'postmeta' == $wpdb-&gt;table ) {<br \/>\nreturn 'wpposts';<br \/>\n}<br \/>\n}<br \/>\n<\/code><br \/>\n\u00c7ok siteli bir WP&#8217;niz varsa ne olur?<\/p>\n<p><code><br \/>\n$wpdb-&gt;add_callback( 'db_callback2' );<br \/>\nfunction db_callback2( $query, $wpdb ) {<br \/>\nif ( preg_match(\"\/^{$wpdb-&gt;base_prefix}\\d+_posts\/\", $wpdb-&gt;table) || preg_match(\"\/^{$wpdb-&gt;base_prefix}\\d+_postmeta\/\", $wpdb-&gt;table) ) {<br \/>\nreturn 'wpposts';<br \/>\n}<br \/>\n}<br \/>\n<\/code><br \/>\nYer\u00e7ekimi formlar\u0131 tablolar\u0131 i\u00e7in \u00e7ok b\u00f6lgeli DB i\u00e7in ba\u015fka bir \u00f6rnek:<\/p>\n<p><code><br \/>\n$wpdb-&gt;add_callback( 'db_callback3' );<br \/>\nfunction db_callback3( $query, $wpdb ) {<br \/>\nif ( preg_match(\"\/^{$wpdb-&gt;base_prefix}\\gf_\/\", $wpdb-&gt;table) || preg_match(\"\/^{$wpdb-&gt;base_prefix}\\d+_gf_\/\", $wpdb-&gt;table) ) {<br \/>\nreturn 'wpposts';<br \/>\n}<br \/>\n}<br \/>\n<\/code><\/p>\n<p id=\"0b10\" class=\"pw-post-body-paragraph jo jp ig jq b jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl hz gh\" data-selectable-paragraph=\"\">Tebrikler.\u00a0Bu kadar.\u00a0Wordpress&#8217;i iki veritaban\u0131na ba\u015far\u0131yla ba\u011flad\u0131n\u0131z.\u00a0\u00c7ok say\u0131da ziyaret\u00e7i ve m\u00fc\u015fteriye sahip bir \u00e7evrimi\u00e7i ma\u011fazan\u0131z varsa,\u00a0<strong class=\"jq ih\">WooCommerce<\/strong>\u00a0tablolar\u0131n\u0131 ba\u015fka bir sunucuya ta\u015f\u0131yabilir ve bu y\u00f6ntemle WooCommerce i\u00e7in daha fazla kaynak ayarlayabilirsiniz.<\/p>\n<p id=\"7a44\" class=\"pw-post-body-paragraph jo jp ig jq b jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl hz gh\" data-selectable-paragraph=\"\">LudicrousDB ile daha fazlas\u0131n\u0131 m\u0131 yapman\u0131z gerekiyor?\u00a0<a class=\"au lw\" href=\"https:\/\/github.com\/stuttter\/ludicrousdb\" target=\"_blank\" rel=\"noopener ugc nofollow\">Github<\/a>\u00a0sayfalar\u0131na\u00a0g\u00f6z at\u0131n.\u00a0Prosed\u00fcr HyperDB i\u00e7in hemen hemen ayn\u0131d\u0131r.<\/p>\n<p id=\"91a3\" class=\"pw-post-body-paragraph jo jp ig jq b jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl hz gh\" data-selectable-paragraph=\"\">Bu y\u00f6ntem WordPress 6.0, PHP 7.4 ve MYSQL 8.0 \u00fczerinde test edilmi\u015ftir.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress ile ya\u015fan\u0131lan en b\u00fcy\u00fck sorunlardan biri veritaban\u0131. Fiziksel sunucu veya sanal sunucu yada wordpress hosting kullan\u0131m\u0131ndan ba\u011f\u0131ms\u0131z olarak \u00dczerinde ne kadar \u00e7ok veri kaydedilirse, o kadar yava\u015flar ve t\u00fcm web sitesi ve kullan\u0131c\u0131 deneyimi \u00fczerinde k\u00f6t\u00fc etkileri olur ve bu da ziyaret\u00e7i ve kullan\u0131c\u0131 say\u0131s\u0131nda b\u00fcy\u00fck bir d\u00fc\u015f\u00fc\u015fe neden olur. Peki, onu bir \u0130svi\u00e7re &hellip;<\/p>\n","protected":false},"author":1,"featured_media":1485,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[11],"tags":[],"class_list":["post-1848","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"acf":[],"_links":{"self":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/posts\/1848","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/comments?post=1848"}],"version-history":[{"count":0,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/posts\/1848\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/media\/1485"}],"wp:attachment":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/media?parent=1848"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/categories?post=1848"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/tags?post=1848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}