Adatbázis: SQL, XML DB

gigantikus adatbázist hova?

Sziasztok!

Jött ma egy kérdés, miszerint egy 500terás adatbázist kéne üzemeltetni napi 10milliárd lekérdezéssel.
Elsőként az amazon jutott eszembe.
Ti hová szerveznétek ki ekkora adatbázist ilyen forgalommal?
Saját berendezésekben nem merek gondolkodni, de ha gondolkodnék, akkor kb nagyságrendileg mire lenne szükségem?

PZ

[Megoldva] SQL - két oszlop közül a nagyobbik értékű

Hello!

Meg lehet azt csinálni SQL-ben, hogy két numerikus oszlopból a magasabb értékűt adom vissza?

Tehát minden sornál, ha az A oszlop a nagyobb, akkor az A értékét, ha a B oszlop a nagyobb B értékét kapjam vissza egy általam elnevezett mezőben?

Itt egy skicc, hogy mit is szeretnék:

select ID, (if A>B then A else B) as MEZO from TABLA

Persze ez a formula nem működik, de hátha meg lehet ezt oldani.

Update: MySql-ben erre volna jó a GREATEST, csakhogy nekem most egy Access (tudom) adatbázison kellene ezt megoldanom...

Előre is köszi,
Moha

Drupal tartalom speciális export

Nos egy érdekes kérdésem lenne. Van egy tökéletesen elcseszett sql táblával megvert drupal honlap. Új telepítésbe csak és kizárólag a tartalmat (bejegyzések, oldalak, tagek) és a felhasználókat kellene importálni. Erre milyen lehetőség van? Az eddig általam ismert programok (backup and migrate modul) mindent importált, tehát a teljes hibás adatbázist.
Válaszokat előre is köszönöm.
Szerk.: még egy fontos infó: Drupal 7-ről van szó

MySQL lekérdezés probléma (UNION + ORDER BY)

Sziasztok!

Van egy lekérdezésem, ami nem azt a sorrendű eredményt adja vissza amire vágyok:

(SELECT id,prize,upgrades FROM deals WHERE upgrades LIKE '%highlighted%' ORDER BY prize DESC)
UNION
(SELECT id,prize,upgrades FROM deals WHERE upgrades NOT LIKE '%highlighted%' ORDER BY prize DESC)

Az a célom, hogy elöszőr azon sorokat kérdezze le, amelyek upgrades mezőjében szerepel a 'highlighted' szó, ezután csapja hozzá azokat a sorokat, amelyek upgrades mezőjében nem szerepel a 'highlighted' szó. A probléma az, hogy az első SELECT rendesen lekérdezi a sorokat és megfelelően listázza, de a második SELECT nem képes erre. Lekérdezi a 'highlighted'-et nem tartalmazó upgrades mezővel rendelkező sorokat, de azokat nem rendezi prize szerint.
Külön külön a két SELECT rendesen lefut és jól rendezi az eredményt, de együtt nem.

A lekérdezés szempontjából fontos lehet, hogy a lekérdezések még SELECT-enként rendelkeznek JOIN-okkal, de azt állapítottam meg, hogy nem ez okozza a hibát.

Továbbá, az upgrades mező default értéke NULL, és van olyan eset is, amikor üres a mező, ezért a második SELECT WHERE ágában van még néhány kiegészítés, mint: OR upgrades='' OR upgrades IS NULL.

Előre is köszönöm a segítségeteket!

SQL lekérdezés

Sziasztok,

Kedves SQL guruk az alábbi problémában kérném a segítségeteket: Adott egy példa tábla, melyben blog kommentek vannak. A szerkezet: blog_id, felhasznalo_id, komment, bejegyzes_datum. Ebből a táblázatból kellene blogok kapcsolatát felderítenem (legalább X számú különböző, de közös kommentelőjük van). Tehát olyan lekérdezést kellene futtatnom, aminek az eredménye: blog1, blog2, kozos_komment_szam.

Az a baj, hogy csak egy blogra tudom könnyen megírni a lekérdezést, pl.:
select owner_id, blog_id from bloghu_comment where
( owner_id in (SELECT distinct(owner_id) FROM bloghu_comment where blog_id=3) )
and blog_id != 3

De ez csak a 3. sorszámú blog kapcsolatait adja vissza (ebből természetesen még darabszámot kell kinyerni, de az rendben van). Nekem "egy menetben" kellene az összes.

Előre is köszönöm!

[MEGOLDVA] MySQL tábla partícionálás

Adva van egy adatbázis aminek a sebességén kellene javítanom.
Van ebben a db -ben néhány olyan tábla melyekben cirka 5 - 8 millió rekord van. Mivel és a hozzájuk tartozó file méret is Gigabyte körüli, szeretném ezeket elpartícionálni, 500 ezer, 1 millio rekordonként.
A MySQL ide vágó doksiját elolvastam ( http://dev.mysql.com/doc/refman/5.1/en/partitioning-range.html ).
Viszont az nem egészen tiszta, hogy ha most megcsinálom a partíciókat akkor később, a rekordok szaporodásával ezt meg kell-e csinálnom még egyszer.

Tehát ha most csinálok egy táblából amiben 5 430 789 rekord van, 6 partíciót:

* 0 - 1 000 000 -ig
* 1 000 001 - 2 000 000 -ig
* 2 000 001 - 3 000 000 -ig
* 3 000 001 - 4 000 000 -ig
* 4 000 001 - 5 000 000 -ig
* 5 000 001 - a végéig

akkor a hatodik partíció fog megint hízni akármeddig (erre tippelek a doksi alapján), vagy a hatodik partíció tart a tábla jelenlegi végéig és a később beszúrt adatok egy 7. partícióba kerülnek.

Másik kérdés partícionálhatok-e úgy, hogy azokra a recordokra is megmondom a partíció határokat amik még nincsenek a táblában (jelen példát folytatva 5 - 6 millió, 6 - 7 millió, 7 - 8 millió, 8 - 9 millió, stb)?

lekérdezés futási idejének megállapítása

Sziasztok!

Szerintetek melyik a gyorsabb?
SELECT count(mezonev) FROM tablanev WHERE mezonev = 123;
vagy
SELECT count(*) FROM tablanev WHERE mezonev = 123;

Próbálnám gyorsítani és optimalizálni a dolgokat, de ha konzolon nézem egy 20000 rekordot tartalmazó táblán, mind a kettő ugyanazt az időeredményt adja.(0.04 sec)

De fontos lenne, hogy a gyorsabb(optimálisabb) verziót válasszam, mert elég sokszor hajtódik végre a lekérdezés.

Előre is köszi a válaszokat.

HSQLDB (LibreOffice) és regexp

Hello.

Van egy adatbázis. Egyik mezőt kéne úgy szűrni hogy minden olyan eredményt adjon ki amiben H-van. Ez addig OK, is lenne hogy ha csak így magában fordulna elő de egyes helyeken még más karakterek is vannak mellette. Van ahol csak egy sima SPACE de az is pont elég zavaró már.

"mezőnév" = 'H' kidaja az összes olyat ahol van benne H. De ugye semmi mást nem. Itt elakadtam.

"mezőnév" REGEXP 'H.*' mindig hibát dob
"mezőnév" = 'H.*' sem tetszik neki

Egyáltalán a regexp parancsot lehet használni HSQLDB-ben?