Autor Zpráva
1ight
Profil
Dobrý den chtěl bych se Vás zeptat jestli nemá někdo praxi..
Mám 3 DB

DB User:
ID: 105,...
ID: 185,... Name: Honza,...

DB Maps:
User: 105, Grup: 3,...
User: 185, Grup: 1,...
User: 105, Grup: 8,...
User: 105, Grup: 1,...

DB Grup/Data:
11_Data, ....
12_Data, ....
13_Data, ....
14_Data, ....

21_Data, ....
22_Data, ....
23_Data, ....
24_Data, .... atd .. 31_DATA,..

prakticky s toho chci vyfiltrovat data který patří tomu určitýmu uživately z určitý Grupy/skupiny... a vypsat to na jednu stranku ale zasekl jsem se až tedka kdyz jsem přidelal grupy/skupiny a mám napojit 11_Data, ale to číslo toho _Data mam zapsaný v tabulce service nemáte někdo nějakou podobnou zkušenost jak jinak to udělat a mít málo dotazu v mysql?

Snažím se vyhnout tomu dělat 4x web = 1x Grupa = 1x Web :-( Jestli se nekdo ozve budu moc rád za radu děkuju Vám.
Casero
Profil
1ight
Jedná se opravdu o tři databáse, nebo pouze tabulky?...Vysvětluješ to dost složitě, čeho tedy chceš docílit? Jakou mají tabulky(databáse) logickou návaznost?
User (id) -> maps (user)
maps (grup) -> Grup/data (zde pojíš maps.grup_Data ?...proč to není v samostatných sloupcích?)
1ight
Profil
ano jsou to 3DB... a tabulky
v případě zatížení serveru abych pak nemusel řešit problém co pak...

Uf ta druhá otazka :-) logicka navaznost?
Takže určitě zaprvní kvuli serveru kdyby nahodou tak at se to dá lehce rešit např rozdělení db do více serveru pak z duvodu optimalizace výsledku pro server, protože v případě kdybych to nerozdělil na grupy a nebo vubec na typy 1,2,3,4 tak by se mi mohlo stat že časem tam budu mít strašně moc dat a dotazy budou zatížený a hlavně přehuštěný.. Snažím se to všechno dělat optimálně lehce a krátce abych v budoucnu co kdyby... už se nemusel starat ...

Proč user data service?...
Takže člověk se přihlásí pod svým jmenem tam dostane teoreticky nějaký id... a kdyz nekam neco vlozi tak se ulozi jeho id do service +informace co přesně kam a kde uložil aby nedošlo k duplikatum že by vlastnil neco co nemá vlastnit z jiné tabulky. A tedka mám prave problém že bych chtel označit tu tabulku
a vypsat mu ty konkretni data a tady jsem se zasekl. Nevim jak udelat např.:

SELECT * FROM service (?)4_Data WHERE id = $yourid AND idservice=idgrup (ale tady prave potrebuju to idgrup vložit mistot toho otazniku nejlepší by bylo kdyby to šlo přeházet,.. uf ted me napadlo možná to pudje left join jdu to zkusit..
1ight
Profil
Ja myslím že to pujde na 100% jen to musím celý nejak přeházet děkuju moc za nakopnutí.
ninja
Profil
1ight: Myslim ze zvolena cesta neni dobra. Pokud nebude jeden MySQL server stihat a zatez rozdelite na vicero hw, tezko dosahnete jednim SELECTEM na vice databazovych stroju, takze budete muset pokladat 2 dotazy.

Jakou predpokladate zatez? Dotazy budou spise selectety, nebo insert/update? Prumerna velikost dat na radek (uzivatele)? Predpokladany pocet radek (uzivatelu)? Myslite ze je MySQL vhodna?
Mastodont
Profil
1ight
Ty programuješ nějakou enterprise aplikaci pro 50 000 uživatelů z 15 zemí?
1ight
Profil
Uričtě nejsem expert beru to vše jen s teoretický stránky jak věci fungují a co si o tom myslím..... nemám školu nemam nic na tohle téma.

- Jinak jde o selecty z 96% možná 99%
- ( tezko dosahnete jednim SELECTEM na vice databazovych stroj )
proč myslíte že ne? Teorie je když naconnectuju viz "mysql_connect1 mistni server" && "mysql_connect2 jiné IP pro třeba to users" a pak select tak by my to mohlou spracovat?... doufam .. já mam jen jeden počítač takže praxi jsem nezkoušel a problémy v jednom počítači zatím nemam, nejsou.

Jsem rád že tu píšete kritiku neob nápady děkuju
1ight
Profil
mastadont třeba bude 20 zemi :-)
ninja
Profil
1ight: Vase reseni nemuze fungovat. Kdybyste alepson kouknul do manualu, tak funkce mysql_query() se vztahuje samozrejme pouze k (jendomu) aktivnimu spojeni. Jediny SELECT nad vicero databazi ci stroju neni mozny.

Pokud opravdu budete potrebovat zatez rozkladat (o cemz pochybuji), resi se to uplne jinak. Zkuste si nastudovat jak pracuji indexi, co je to normalnizace databaze a jak optimalizovat dotazy konkretne pro MySQL.
1ight
Profil
Ninja funguje to fakt na 100% ....
rad řeknu jak taky rád pomužu uděláš:


Máš:
DB: user (table detail_user) a DB: data ( a treba kind )

$x_connect = mysql_connect ( $x_server, $x_user, $x_pass ) or die ( mysql_error() );
mysql_select_db ( $x_db, $x_connect ) or die ( mysql_error() );

$y_connect = mysql_connect( $y_server, $y_user, $y_pass ) or die ( mysql_error() );
mysql_select_db( $y_db ) or die ( mysql_error() ) ;

pak SELECT * WHERE user.detail_user data.kind where ...... a pokračuješ tímhle zpusobem to funguje
je tam jedno pravidlo když máš poslední spojení tzn y_connect tak u něho nemusíš psát před příkazama název db s tečkou takže je to supr, jen doufam že novýma verzema to nepřekuchaj :-) mám mysql 5

Děkuju za info kouknu "Zkuste si nastudovat jak pracuji indexi"
ninja
Profil
1ight: spojeni na databazi si muzete otevrit kolik chcete, ale pri volani funkce mysql_query bud predate identifikator dane databaze (mysql serveru), nebo se pouzije posledni otevrene spojeni. Ve Vasem pripade tedy volate:

mysql_query ('SELECT * FROM tabulka', $y_connect);

V zadnem pripade se tim nedostanete k pripojeni $x_connect. Vzdy by to byla bezpecnostni dira jak hrom!


Stale jste nerekl jakou ocekavate zatez.
1ight
Profil
- Ja nevim ale me to fatk funguje ja se mužu dostat do dvou db najednou...
- zátěž doopravdy nevim internet je zahlcenej ale když neco stavím tak se to snažím stavet pořádně abych pak nemel problémy. když neco předelavat to je pak hruza určitě víte hlavne v db
ninja
Profil
1ight: Ano, kdyz ma uzivatel, pres ktere so k SQL serveru pripojujete, potrebna prava, muzete dotazovat vice databazi.

Ale nemuzete se dotazovat najednou na vice serveru! Chapete to uz?

Cela vase predstava je licha. Pokud je internet zahlceny, tak se snazite redudanci priblizt server k nastevnikum, ne nahodne rozhodit zatez na vice serveru. Pokud nemate predstavu o zatezi tak je uplne zbytecne se timto trapit. Databaze to zvladne, kdyz budou query optimalizovane.
1ight
Profil
Tak to se omlouvám to jsem nevedel že je to rozdíl mezi localhostem a ipadresama (ohledne práv): to jsem si asi zase naběhl

Ohledně záteže... rozumím a co když náhodou v budoucnu bude server přetíženej a nebude cesty jinam než to řešit na více počítaču co pak jeslti se můžu zeptat?
ninja
Profil
zadejte si do googlu "mysql replikace"
1ight
Profil
děkuju moc...
Vypada to dobře takhle to řešit

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: