DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   SQL baze podataka - Sponzor: Baze-Podataka.net (http://www.devprotalk.com/forumdisplay.php?f=10)
-   -   Boolean search na innodb (http://www.devprotalk.com/showthread.php?t=1975)

cvele 05. 12. 2006. 22:35

Boolean search na innodb
 
Ok ovo jeste malo... khm... mozda cak i nemoguce...

Dakle zbog mogucnosti koriscenja stranih kljuceva sve tabele su innodb tipa ali sada se ukazala potreba za boolean pretragama :/

Stvari kojima sam razmisljao su sledece:
1. Deljenje tabele na dva dela (da ne objasnjavam zasto... ali nije moguce)
2. Particionisanje tabele na dva dela... moguce ali imam osecaj da cu se ubiti kasnije pokusavajuci da prebacim procedure na production server i nisam siguran kako bi to uopste radilo ako su dva dela razlicitog tipa :/
3. Pokusaj da se boolean zameni like iskazima... overkill big overkill, tabela je ogromna tako da je preformance katastrofa


Ogranicenja... nemogu koristiti extenzije za mysql poput http://www.sphinxsearch.com
tabele moraju ostati innodb

Ima li nesto sto sa prevideo ? google mi nerece nista, ali nista osim na par mesta gde ljudi daju linkove ka sphinx

Neka pomoc ?

ivanhoe 05. 12. 2006. 23:57

mislis na boolean fulltext search ?

mozes da napravis pomocne tabele, jednu sa spiskom nadjenih reci, drugu sa referencama na recorde gde se reci pojavljuju, i onda iz njih radis klasican select sa join-om...

marinowski 06. 12. 2006. 04:20

Ako je u pitanju fulltext search, na flickru su to resili ovako: imaju bazu sa innodb tabelama u kojima nema fulltext indekse. Tu bazu repliciraju, ali kopije nisu innodb tipa, vec MyISAM na kojima jesu postavili fulltext indekse.

Na ovaj nacin izbegavaju problem pada performansi pri istovremenom citanju i pisanju iz baze (u innodb samo insertuju, iz MyISAM samo selectuju). Sa ovom elegantnom cakom su zaobisli problem nepostojanja fulltext indexa na innodb tabelama, a koristene su samo out-of-the-box mogucnosti MySQL-a.

Znam da tebi to treba za jedan server, ali reko' da napisem, mozda bude korisno posto nije ocigledno da kod replikacije mozemo menjati tip tabela.

cvele 06. 12. 2006. 09:00

covek svakim danom nauci nesto novo :)

@zigor
razmisljao sam o tome ali ne dovoljno ozbiljno, recimo sada sam prvi put saznao da mysql ima triggere

dakle finalno resenje ce biti kreiranje nove myisam tabele koja ce se puniti preko trigera

Ilija Studen 06. 12. 2006. 09:09

Citat:

Originalno napisao cvele
dakle finalno resenje ce biti kreiranje nove myisam tabele koja ce se puniti preko trigera

Nešto slično koristim i kod activeCollaba s tom razlikom što se ne koriste trigeri već aplikacija insertuje podatke pri čuvanju objekta (INSERT ili UPDATE - jedna od lepih stvari kod dobro rešenog ORM-a je što možeš da izvedeš tako nešto bez hakeraja, samo se negde u stablu nasleđivanja uglaviš i dodaš šta ti treba).

Ovaj pristup ima veliku prednost jer možeš da akumuliraš pretražive podatke iz celog sistema na jedno mesto. Samo treba na neki način da održiš referencu na izvorni podatak i da znaš kako da matchevani row iz indexa prebaciš u odgovarajući row iz originalne tabele.

Dobro je znati da tako nešto može da bude rešeno na nivou baze. Doduše, MySQL5 je teška egzotika (mnogo veća od PHP5), ali ako radiš nešto custom gde možeš da kontrolišeš platformu mislim da je to prilično fino rešenje.

@zigor: ako ovo za mešanje enginea kod replikacija radi ulepšao si mi dan :D Sad samo da u neko dogledno vreme dodam podršku da skripta može da koristi dve različite konekcije za dve različite operacije (čitanje i pisanje) i problem rešen.

cvele 06. 12. 2006. 09:13

da radi se o potpuno custum resenju kome ce platforma biti server specijalno podignut samo za tu aplikaciju, tako da mogu da pustim masti na volju i koristim svu egzotiku koju zelim :)

@ilija
nikako da se nateram da prevedem ono cudo :) nisam zaboravio ;)

Dejan Topalovic 06. 12. 2006. 10:36

Moze MySQL svasta jos... :)

Postoji cak i partitioning, table splitting (na fixed i dynamic row size), kompresovanje radi brzeg selektovanja, triggers, views, stored procedures, events, podjela database direktorija na vise hard diskova radi boljih I/O performansi, dinamicko podesavanje buffera i session varijabli ... i td.

@cvele: U praksi jos nisam imao potrebu za necim ovakvim kao sto ti imas sad, ali vjerujem da bi razdvajanje na dvije tabele (jedna InnoDB i jedna MyISAM), kao sto je vec predlozeno, rijesilo tvoj problem...

Trenutno mi ne pada neko bolje rjesenje na pamet. :(

kodi 06. 12. 2006. 19:59

Slucajno sam danas naleteo na sledeci text
Citat:

We used to use MyISAM for fulltext, duplicating the data in the InnoDB master table. Once the query rate grew sufficiently high and the data size grew past a gigabyte or so it became completely unacceptable on performance grounds, taking more than half of our database server capacity and still not working well. We abandoned it and switched to Lucene. By that point we were in the top thousand sites on the net, so it had survived pretty well.

I'm also as MySQL Support Engineer but these views are from my Wikipedia role, not the MySQL one.

James Day
ostatak texta (innoDB vs myisam)
http://mysqldatabaseadministration.b...reference.html

ivanhoe 06. 12. 2006. 20:57

mysql se u principu ne snalazi najbolje kad tabela poraste preko ~1.4GB (moja odokativna procena), dodje do naglog pada perfomansi... mi smo krenuli da splitujemo tabele zbog toga, sto resi problem (mada naravno nije bas zgodno za search)

kodi 06. 12. 2006. 21:02

Citat:

Originalno napisao ivanhoe
mysql se u principu ne snalazi najbolje kad tabela poraste preko ~1.4GB (moja odokativna procena), dodje do naglog pada perfomansi... mi smo krenuli da splitujemo tabele zbog toga, sto resi problem (mada naravno nije bas zgodno za search)

govorsi za myisam ili uopsteno?


Vreme je GMT +2. Trenutno vreme je 01:10.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.