Adatbázis: SQL, XML DB

Sok file tarolasahoz hatekony struktura

Egy 3 -szintu hash-elt (xx/xx/xx) konyvtarban van tobb millio par kB ... MB meretu file. Mivel ennek a mentese nem egyszeru (a file-ok sokasaga miatt), arra gondoltam, hogy jobb lenne / lehetne, ha ez a csomo file valamilyen joval kevesebb szamu (pl. 256 db) binaris file-ban lenne (pl. zip, tar, etc).

Persze nem eleg csak siman egy tar file-ba tenni a sok file-t, olyan szerkezet kell, amibol gyorsan elo tudom venni / kiolvasni a keresett file-t, ill. azt is meg kell oldani, hogy tobb processz is irhassa ezeket a file-okat, ill. torolni is tudni kell a belehelyezett file-okat.

Mit javasoltok erre a celra? Lattam egy megoldast, ami 4096 zip file-t nyit meg, es abba pakolja a file-okat, de hatha van ennel elegansabb es hatekonyabb megoldas.

Mongo - nagy adatmennyiségnél melyik megoldás lenne a jobb?

hali,

épp egy tárolási problémával küszködök, és kéne némi tapasztalati vélemény.

az van, hogy van 50E+ user, nekik pedig vannak kapcsolataik egymással -- kivel leveleztek, ki nézett meg kit, ki kedvel kicsodát, stb. ez kb. 3-4M kapcsolati rekord.

mivel igen aggresszíven cache-elek (hogy ne kelljen átnézni állandóan ezeket a kapcsolati rekordokat), így az van, hogy tároláskor és cache-újraépítéskor kell csak a backendhez nyúlnom, ami jelenleg megosztva file (userenként 4 file) és mysql tábla (kapcsolatonként (típusok szerint is) 1 rekord).

mivel nemrég clusteresedtünk, ezért a file backend nfs-re került, de az nagyon omladozik a terhelés alatt (mivel leginkább írási műveletek történnek), így átmenetileg visszakoznom kellett a terheléselosztásos php módszertől. innentől eléggé egyértelmű, hogy a file backendet meg kell szüntetnem, és át kell raknom valamilyen db alapra. a mongot gondoltam kipróbálni erre, főleg, mert memóriában tudja tárolni az igazán aktív rekordokat.

a nagy gondom az, hogy melyik tárolási forma lenne a célszerű.

ha user/kapcsolattípus alapján 1-1 rekordot tárolnék (mint a klasszikus sql alapon), akkor legalább 3-4 millió rekordról lenne szó, ahol minimum 3 indexet kéne fenntartanom (user1 id, user2 id, típus) a hatékony lekéréshez -- ez viszont a cache-elés miatt nem tűnik annyira fontosnak.

a másik variáció az, hogy userenként 1 rekordot tartok fent, amin belül mondjuk json-ba kódolva a jelenlegi fájlok (illetve sql-ben tárolt adatok) tartalma kerül. ez kb. 50E+ rekordot jelent. így csak egy indexet kellene fenntartanom, a user ID-t. így persze vesztem azt, hogy szabadon csináljak lekéréseket a db-ben, de mint az a fentiekből látható, ez most sem lenne megoldható, és nincs is rá szükség. viszont így egy-egy entry viszonylag nagyobb méretű lehet, és kell némi logikát alkalmaznom a betöltéskor/mentéskor, plusz saját logikával kell átnéznem és módosítanom a "file" tartalmát.

per pillanat hajlok az utóbbi felé, mert attól tartok, az előbbinél a rekordok száma miatt az indexek nagyon sok operatív memóriát falnának fel, és eléggé fontos lenne, hogy minél több minden férjen be a ramba.

ti melyiket választanátok?

Egyszerű ( gondolom én ) MySQL kérdés

Sziasztok!

Gyakorolgatok egy-két dolgot, de az sql még nem igazán az erősségem. Az alábbi problémában kérném a segítségeteket:
Van két táblám, leegyszerűsítve kb így:

1. tábla:

| id | x_hash | y_hash |
------------------------
| 1 | aaa | bbb |
| 2 | bbb | ccc |
| 3 | aaa | ccc |

2. tábla

| id | hash | string |
----------------------
| 1 | aaa | str1 |
| 2 | bbb | str2 |
| 3 | ccc | str3 |
Arra lenne szükségem, hogy ha select-tel az első táblában lekérem az aaa-t akkor bbb-t adjon vissza, ha pedig a bbb-t akkor ccc-t. Tehát mindig a két oszlop közül azt, amelyikben épp nem a lekért string van. Ezeket a visszatérő értékeket pedig a második táblával joinolva össze kellene kapcsolni a hash-el és visszakapni aaa esetén az str1-et, bbb esetén az str2-t, stb.

Hogyan lehetséges ez?:)

Köszönöm a segítséget.

postgres -- Ident authentication failed

Hi,

Centos 5-ről mennék Centos 6-ra.
A régin a dovecot rá volt kötve postgres-re, minden király volt, viszont költözés után a dovecot nem tud kapcsolódni a DB-hez:

dovecot: auth: Error: pgsql: Connect failed to LEVELEZŐ_ADATBÁZIS: FATAL: Ident authentication failed for user "LEVELEZŐ_USER"

Viszont a "psql -U LEVELEZŐ_USER -d LEVELEZŐ_ADATBÁZIS" paranccsal jelszó megadása után simán be tudok lépni.

A /var/lib/pgsql/data/pg_hba.conf -ban 5-ösön és itt 6-oson is ez van:

host LEVELEZŐ_ADATBÁZIS LEVELEZŐ_USER 127.0.0.1 255.255.255.255 password
local LEVELEZŐ_ADATBÁZIS LEVELEZŐ_USER password

Valamit durván elnézek, de nem tudom mit. Typo elvileg nem lehet, mert a fenti log részleteken simán csináltam search/replace -t és mindenhol cserélt.

Tipp, valaki?

Thx.

----------------------

Megoldottam workaround-dal: áttettem az egész DB-t mysql alá.

[megoldva] Másik oszlop értékétől függő lekérdezés

Sziasztok,

Tudna valaki irányt mutatni merre keressek?

MySQL-ben szeretném listázni egy táblából az A oszlop tartalmából az egyformákat, de azok közül is csak olyanokat, ahol az egyforma értékek sorában a B nem tartalmaz egy adott értéket.

Vegyük az alábbi táblát:


oszlop A | oszlop B
---------------------
alma     |
alma     |
alma     | 1
banan    |
citrom   |
citrom   |
narancs  |
narancs  | 1

Olyan értékeket akarok listázni az A-ból, amelyekhez nem tartozik a B-ben 1-es érték. Tehát ha az egyforma A oszlop értékek egyik sorában van 1-es, akkor azt a fajta A értéket már nem akarom listázni. Tehát ezt az eredményt akarom kapni:

banan
citrom

Lehetséges ez egyszerű módon?

Köszi előre is minden ötletet!

Ldap és Mysql

Üdv mindenkinek.

A következő problémára keresek megoldás.

Van egy Ldap szerver, ezen lehet szépen kezelni a Mail fiókokat, felvenni, törölni, módosítani, stb.
Viszont több probléma (Nem tudunk úgy kiadni hozzáférést, hogy XY tudja a saját Domain bejegyzése alatt a mail fiókok adatait módosítani és ehhez hasonló gondok) után arra az elhatározásra jutottunk, hogy szeretnék ISPConfig-ra váltani és ehhez meg MYSQL van.

A gond akkor mutatkozik, amikor a meglévő fiókok jelszavát szeretném migrálni.

AZ ISPConfig -ban a következő részt találtam:


'password' => array (
'datatype' => 'VARCHAR',
'formtype' => 'PASSWORD',
'validators' => array (
0 => array (
'type' => 'CUSTOM',
'class' => 'validate_password',
'function' => 'password_check',
'errmsg' => 'weak_password_txt'
)
),
'encryption' => 'CRYPT',
'default' => '',
'value' => '',
'width' => '30',
'maxlength' => '255'
),

Itt ha pl. azt adom meg jelszónak hogy "qwe123" az kódoltan valahogy így néz ki:
"$1$h+4QniN8$gohTRkoyM2ljXvp2KCUfo/"

Az LDAP-ban viszont a következő a helyzet majdnem minden elődöm, mást és mást használt.
Találtam olyanokat akiknek így néz ki a jelszava:
" {MD5}imklZpDevP3Dy3IGybN8Ag== "
De találtam ilyet is:
" {SSHA}IpRb/b0+dfaR9sGsuznOuU3nBkAAfCnJ "

A kérdésem a következő... mit tudok tenni annak érdekében, hogy az új rendszerbe át tudjam migrálni a régi jelszavakat.

Válaszokat előre is köszönöm.

Kulcs-Ugyvitel, hogy lepjek be a Firebird -be?

Hello,

adott egy kulcs ugyvitel szerver, ami firebird -el mukodik, akarhogy akarok belepni a lelkebe egy manager progival, azt mondja, hogy a sysdba userenek jelszava not defined. he? :-)

Talaltam tippeket a neten, de eddig nincs siker:

C:\ProgramData\KS\FbDatabaseServer\bin>gsec -user sysdba -pass masterkey -mo sys
dba -pw masterkey
Warning - maximum 8 significant bytes of password used
use gsec -? to get help
Your user name and password are not defined. Ask your database administrator to
set up a Firebird login.
unable to open database

---

C:\ProgramData\KS\FbDatabaseServer\bin>gsec -add SYSDBA -pw masterkey
Warning - maximum 8 significant bytes of password used
use gsec -? to get help
Cannot attach to services manager
user name and password are required while attaching to the services manager
unable to open database

Valakinek otlet?

koszi
FBK

MSSQL adatbázis backup desztináció

Azt szeretném beállítani a csodás MSSQL Management Studióban, hogy adott adatbázis backupnál \\szerver\share\dbnev_datum_idopont.bak formában menjen a biznisz. Ezt már anno valakinek sikerült így megadnia, de már széttúrtam a guglit és egyszerűen semmi használhatót nem találok. Az aktuálisan megadottat nem lehet szerkeszteni, csak felvenni és törölni a backup célokat. Addig is sikerült eljutnom, hogy scriptet gyártsak, de attól nem lettem boldog.

A cél az lenne, hogy ha bárki beleklikkel, hogy MENTÉS, akkor szépen az aznapi legyen ott. Mivel igencsak nagy db-ről van szó, ezért az appendes egyfile-os téma nem játszik.

mysql information_schema.tables inkonzisztencia

nem regota foglalkozom mysql-lel, de gondolom ez nem feature hanem bug:


SELECT t.TABLE_NAME
FROM information_schema.TABLES t
WHERE t.TABLE_SCHEMA = 'sema' AND
t.TABLE_NAME = 'table'

a fenti select hoz 1 db rekordot a tabla nevevel, eddig minden ok.


SELECT *
FROM information_schema.TABLES t
WHERE t.TABLE_SCHEMA = 'sema' AND
t.TABLE_NAME = 'table'

ez igy nem hoz semmit.

Az egyeduli kulonbseg a ket query kozott a selectben levo oszlopok. Ha beteszem a ROW_FORMAT, TABLE_ROWS, stb oszlopokat, akkor nem hoz eredményt. Szerintetek ez mitol lehet?

PGSQL 9.2 WAL tárolás a standby node-on

Hello,

Adott két PGSQL 9.2 szerver, egy master és egy standby.
A master-en PGDATA a /opt/pg/data
wal_level = hot_standby
archive_mode = on
archive_command = 'test ! -f /opt/pg/archive/%f && cp %p /opt/pg/archive/%f'
max_wal_senders = 3

A standby-on PGDATA a /home/pgrun/data:
postgresql.conf-ban:
hot_standby = on
archive_mode = on
archive_command = 'test ! -f /home/pgrun/archive/%f && cp %p /home/pgrun/archive/%f'

és a recovery.conf:
standby_mode = 'on'
#
primary_conninfo = 'host= user=pgrun'
trigger_file = '/home/pgrun/data/trigger.psql'
restore_command = 'cp /home/pgrun/archive/%f %p'

Látom a master-en a WAL sender process-t, a standby-on a WAL receiver-t, a replikáció szépen megy is. A kérdés az, hogy a másodlagoson a hova kerül a letöltött WAL file? Ezt meg kell adni a restore_command-ban? Vagy ahogy a WAL receiver process leszedi a Master-ről a WAL darabkákat, írja bele az ő pg_xlog könyvtárában a WAL file-ba és azt majd az archive_command elviszi onnan (ebben az esetben a restore_command-ot ki kellene szedni a recovery.conf-ból)?
Ez tulajdonképpen a log shipping vagy a streaming replication? Nem tudtam kivenni teljesen a PG dokumentációból.
A két szerver között nincs file-szintű megosztás (NFS, SMB, stb.).

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