Autor Zpráva
1ight
Profil
Dobrý den chtel bych se zeptát někoho s praxí, jestli mi někdo nedá radu abych časem nemusel řešit tento problém znovu a nepředelaval celou strukturu.

Při extremních dotazech jestli je lepší zvolit strategii:
- rodzělení uživatele Pavel do folderu /p/a/v/e/l/pavel.txt a nebo ho raši uložit do sql table p/ no tady asi dál vytvařet podsložky nejdou ale nejak se to vyřeší...... a tam budu mít uživatele pavel?

nevím jestli pruchod folderama při extremních záteží nebude velký problém na hdd a neni lepší tedy doopravdy to dát do souboru user.txt a tam mít tu miliardu lidi?
A nebo to dat do mysql table a tam mít miliardu lidí?

Prosím jen fakt rozumný rady.
TSD
Profil *
pro skladování informace jednoznačně mysql table a miliarda lidí

procházení složkama jsem nepochopil. Jestli jde o to, že máš miliardu lidí a každý má svůj jeden text, který uchováváš v souboru, tak i ten (ne název, obsah) můžeš uchovávat v databázi.
1ight
Profil
dejme tomu že máš jméno Pavel a ty si ho rzkouskuješ na P a v e l a pak dáš vytvořit složku ve složce:

/login/p/a/v/e/l a to ani vlastně nemusí být, ale i když pak nemusí HDD mapovat 1000....x folderu tak je možná lepší i to tak rozdělit.. aspon do 3 urovní /login/p/a/v/pavel@neco.cz.txt

a nebo pak je možnost udelat složku /login/ a v ní txt uživatele... např.: /login/pavel@neco.cz.txt, /login/petr@neco.cz.txt ......
Davex
Profil
Data, která se často mění, je mnohem efektivnější a bezpečnější ukládat do databáze MySQL. Zvlášť při extrémní zátěži je používání souborů velmi riskantní.
TSD
Profil *
1ight
OK, ale co bude v těch složkách?

Jestli chceš pro každou osbou skladovat jeden textový soubor, tak platí to co jsem psal.
Jestli těch souborů bude víc, tak to trochu popiš.
1ight
Profil
Davex:
Teoreticky když dám fopen:
- Tak načtu data ze serveru do přoměnný (tzn.: paměti server a jen je zpracovává) a z paměti serveru udelam dotaz
if ( ( $login == $_POST['login'] ) and ( $pass = $_POST['pass'] ) ) {..

Takže data teoreticky nemuže nikdo zneužít data se nikam neposílaj neechujou... a tech souboru mužu mít nějaká bezpečností nastavení .htaccess nebo je nejak zakodovat vlastním kodovacím systemem ( ty např pass )
1ight
Profil
O zpracování jsem nepřemýšlel mě stačí teoreticky tam uložit jen bud /login/p/a/v/pavel@neco.cz/login.txt nebo /login/m/a/r/martin@neco.cz/login.txt a v loginu bych měl jen Login: martin@neco.cz Heslo: yyyy

nepřemýslel jsem nad tím jde mi jen o technický zázemí jestli pruchod folderama k souboru a načtení je náročnější než prohledávání sql?
1ight
Profil
Myslím že pruchod folderama bude mít naročnější než sám dotaz sql z duvodu že sql ukládá table do 1 souboru... když si vezmu že mám video 2GB a začnu ho prohledávat tak mam problém...

Při folder kliknu a jsem tam a mám určitý dotaz na dlani.

Jestli máte jiný nazor určitě napište budu rad nechci udelat zbytečně chybu
Davex
Profil
1ight
Jestli hledáš důvody, proč nepoužít MySQL, tak je nehledej. Databáze je pro tento účel přímo optimalizovaná. Jeden dotaz do databáze je rychlejší než vyhledání a načtení souboru z disku. Nehledě na to, že při velkém počtu uživatelů zabere databáze mnohem méně místa než jednotlivé soubory na disku.
TSD
Profil *
Něco dost podobného se řešilo tady.
1ight
Profil
Davex:
=====
Dobře tak to zkusím nějak vyřešit přes sql jen me štve že nejdou v mysql vytvářet v db tabulky který by byly do hloubky :-( něco jako ty foldery abych mohl mít přímí dotazy a nebylo tam tak velký zbytečný hledání.

TSD:
===
děkuju zajmavý je poslední názor od: Bukaj
EDIT: Pokud by někoho napadlo, že by se tedy daly nejdřív vymazat soubory a poté teprve odstranit údaje z databáze, nedoporučuji. Může se podařit vymazat jeden soubor, ale druhý ne. V databázi fotka zůstane, ale např. k ní již nebudeme mít náhled. Je tedy lepší, když budou soubory na disku přebývat, než aby chyběly.



Tak já vám děkuju, jestli sem někdo něco dopíše určitě se sem zase někdy podívám zajamly by mě názory a hlavně praxe s využití fopen nebo podobných file principů s masivních zpracování dat, strategie a přístupky k tomuto problému.

Nashledanou a hezkou noční sobotu :-)
nightfish
Profil
Dobře tak to zkusím nějak vyřešit přes sql jen me štve že nejdou v mysql vytvářet v db tabulky který by byly do hloubky
stromové struktury se do běžných relačních databází opravdu neúkládají úplně nejlépe
ovšem otázkou je, jestli stromovou strukturu potřebujete - zatím takový pocit nemám
Mastodont
Profil
1ight
Absolutně nechápu, proč by mělo být zapotřebí kouskovat jméno po 1 písmenu - jaký je důvod?
nightfish
Profil
Mastodont
Absolutně nechápu, proč by mělo být zapotřebí kouskovat jméno po 1 písmenu - jaký je důvod?

aby neměl v jednom adresáři příliš mnoho souborů... (což samozřejmě s použitím databáze padá)
1ight
Profil
Nene je to z duvodu zátěže, zbytečného hledání a zpracovávání jednoho primitivního dotazu...
Proč hledat určitýho klienta pro přihlášení mezi 999xy klientu? Když potencionalně jednou tam bude tolik klientu že server to nebude zvládat. Proč to neřeští přímím dotazem? A tím ulehčím serveru i při nekonečno uživatelů.

Jedinný způsob pro přímí dotaz bez zátěže a prohledávání je přímá cesta tzn rozkouskovat
/p/a/v/e/l (to je tree folder)
tím padem dotaz je jasný a jestli existuje folder nebo table v nějakém tomto principu tak odpadne hledání

Ale nevím jak tohle postavit na mysql aby šlo vytvářet tabulky do hloubky něco jako folder :/

Ale na druhou stranu když nad tím přemýšlím .... kdyby to byl tak moc dobrý nápad co píšu tak by se to určitě dávno používalo ve světe... viz jako menu s parent a child.... na sql dotazy.. To je dost dobrý nápad a ja bych na to nikdy nepřišl a to co píšu ja, myslím že je oproti ostatním věcem uplně primitivní.

Ale jak to jinak řešit? (ekonomicky)
1ight
Profil
Asi vím z jakého duvodu to je ...

Mysql se načítá do ramek takže když máme třeba 4GB ramek na serveru a udelame ho jen logovací tak ten server nešáhne ani na disk... S té strany co píšu ja, tak zde je velká pravdepodobnost, že za krátký čas začnou být na disku bad sectory.

Tady asi doopravdy vyhrála mysql/databazové systémy.
Davex
Profil
1ight
Mysql se načítá do ramek
V tom výhoda MySQL není. Především je v tom, že databáze používají vysoce sofistikované algoritmy, které jsou maximálně optimalizovány. Např. při hledání hodnoty v nějaké rozsáhlé tabulce se neprocházejí a neporovnávají všechny řádky. Algoritmus je navržen tak, že jsou v optimálním případně potřeba jen 1-3 porovnání, čímž se práce s databází nesmírně urychluje.
TSD
Profil *
Proč hledat určitýho klienta pro přihlášení mezi 999xy klientu?

Pořád mám pocit, že jsem mimo mísu.
Kdybych měl řešit skladování souborů stovek tisíc lidí, udělal bych to tak, že bych měl v databázi jednu tabulku lidí, kde by bylo ID, jméno a název složky. Ten bych generoval jako náhodný string o dejme tomu 10 znacích a samozřejmě vždycky zjistil (dotazem, nikoliv procházením složek), jestli ho náhodou už někdo nemá.

Jediná úvaha, která stojí za řeč, je, jestli mít na jedné úrovni sto tisíc složek. Pokud bude závěr, že ne, tak bych si vyrobil složky 0001 až 9999 a složky jednotlivých userů cpal naprosto náhodně do nich.

Pokud jsem to pochopil nějak špatně, tak jde holt o záležitost, na kterou mi prostě nestačí IQ, takových věcí je určitě spousta.
Davex
Profil
TSD
Já jsem to pochopil tak (možná špatně), že 1ight chtěl pro jednoho uživatele jen jeden soubor (s loginem a heslem).
TSD
Profil *
Davex
To byla jedna z variant, jak se ta jeho úplně první otázka dala vyložit. Když jsem se ho ptal, tak mi na to neodpověděl.

procházení složkama jsem nepochopil. Jestli jde o to, že máš miliardu lidí a každý má svůj jeden text, který uchováváš v souboru, tak i ten (ne název, obsah) můžeš uchovávat v databázi.
1ight
Profil
Omlouvám se ano bylo to myšleno jak píše Davex..
// pro jednoho uživatele jen jeden soubor (s loginem a heslem)

Je pravda že začínám dávát víc na názor těch lidí co tu píšou všeobecně o tom že jedinně mysql než cokoliv jinýho...
Duvod třeba ty ramky skromně třeba 1GB textu v ramkach ( dobře rozvržený tabulky ) to je hodne moc lidi a výkon nevím o kolikikrát víc ale určitě o hodně moc krat víc než disk, nedavno me překvapilo seskupovani tabulek do grup tim mysql me dostal a zase jsem musel nad tím přemýšlet..

Mysql nevypada jen tak jak vypada na první pohled. Děkuju za názory věřím tomu že ty zkušení lidi s ním udelají výkonově i to skoro nemožný.

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:

0