» »

MongoDB

MongoDB

ragezor ::

Zakaj folk "hejta" MongoDB?

A lahko kdo pove ali pa linka kaj uporabnega na kaj je treba paziti? Namrec na firmi uporabljamo Mongo in bi ga radi pripravili do tega, da se bo v prihodnosti cimbolj scalal in ne bo problemov. Vse kar najdem na googlu je pred 2.2 verzijo (ali celo 2.0) in kolikor vem so dosti stvari popravili.

Drugace bi se pa baza uporabljala za time-series data, meritve iz senzorjev vsakih par sekund. Prednosti, ki pa jih vidimo pri Mongotu so pa enostaven failover, horizontalen scaling, ce bo podatkov kdaj dosti. Vdelan aggregation framework, ki bo znal iz meritev izlusciti kaj pametnega in pa mislim tudi, da je arhiviranje podatkov lazje na mongotu, ker v vecini primerov ne rabimo meritev za dalj casa nazaj.

napsy ::

Problem pri MongoDB je globalni write lock, kar precej upocasni wirte operacije. Kakor pa sem po netu bral, pa je tudi nekaj tezav z stabilnostjo.
"If you die, you die. But when you live you live. There is no time to waste."

Cacamas ::

Problem je pri pisanju. Efektivno ne moreš vedet, ali je pisanje uspelo.
Googlaj getLastError funkcijo.

Sicer pa, ko gradiš arhitekturo moraš vedeti meje uporabljene tehnologije.
Ga že nekaj let uporabljamo brez problemov.

mikojan ::

Še prednosti, slabosti mongodb? Dejte se mal razpisat. Mate dolg jezik kok obvladate html pa css a da bi znali spravit skupaj 30 besed o mongodb pa ne.

ragezor ::

Kolikor vem getLastError driver sam poklice ce mas safe=True in torej vedno ves, ali je pisanje uspelo.

Tudi global lock so odstranili ze ce kaj vem.

Looooooka ::

Za analizo naj bi bila zdej dobra kombinacija MongoDB+Hadoop. Zadevo je še Microsoft podprl tko da zna bit dobra kombinacija.
Menda se da mongodb uporabit za shranjevanje podatkov, ki jih potem analiziras s hadoopom in rezultate magar zapises v mysql(ker ce mas res ulala podatkov ti ni glih v interesu vsakic delat neke dolge analize).
Kj vec pa ne bi vedel. Ta teden probal instalirat hadoop na winse pa mam zgleda zarad beta verzije nekaj zjeban in ni slo...tko, da bom probu zadevo lepo v virtualki probat.
Se bom pa pomojem mongodb-ju izognil, ker se mi sanja ne kako je tm z resevanjem problemov(backup, crash,itd...) :)

mile ::

Write lock-i so na nivoju database-a, tako da ne tlacit vse collection-e v en database. Get getLastError() se avtomatično pokliče, če imaš uporabljaš privzeti ACKNOWLEDGED
WriteConcern. Res pa je, da so spremembe v RAMu, preden se zadeve flushnejo na disk. Naslednji korak je JOURNALED writeconcern.

Uporabljam MongoDB za shranjevanje CDRjev, ki imajo zaradi specifik usmerjanja precej različno strukturo na odhodni strani in zaenkrat se obnese odlično,6-8M insertov na dan. Replikacija med dvema strežnikoma, paralelno se neobdelani podatki shranjuje še na 3. ločenem strežniku, težav z stabilinostjo oziroma izgubljenimi podatki (še) nisem imel.

Blinder ::

Kako se ustvari mongodb driver za poljuben programski jezik?
99.991% of over-25 population has tried kissing.
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija

mile ::

Blinder ::

nobenega ne pogrešam, sam zanima, kak zgleda postopek za narediti driver.
99.991% of over-25 population has tried kissing.
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija

ragezor ::

mas na githubu source code od vseh mongodb driverjev in si lahko pogledas.

Shinobi ::

"Driver" je tu napačno pojmovanje. Ponavadi gre za wrapper.
V 99% vseh primerov gre za TCP protokol bodi si preko
winsocka bodisi preko česa drugega. Od SQLa do SQLa
se razlikujejo samo določeni parametri. Npr. eni imajo
dataset drugi imajo database tretji imajo server.

V .NET enostavno podeduješ iz generičnega razreda
in vneseš specifike.

Drugje moraš verjetno spisati pač osnovne knjižice
v Cju, da lahko potem preko shared lib-ov uporabljaš
zadevo v vseh jezikih in prevajalnikih.

acookook ::

Da ne bom kreiral nove teme, me zanima slednje:
const vnosZetona = (req,res) =>{
    if(!req.body.ePosta ){
        return res.status(400).json({
            "sporočilo": "Epošta uporabnika manjka! Parameter je obvezen"
        });
    }
    if(!(new RegExp("[a-z]{2}[0-9]{4}@student.si").test(req.body.ePosta))){
        return res.status(400).json({
            "sporočilo": "Nimaš pravi mail"
        });
    }
    var generiranZeton = generirajObnovitveniZeton();
    User
    .updateOne( {email: req.body.ePosta},
                { $set: {zetonZaObnavljanjeGesla:generiranZeton}},
                (napaka) => {
                    if(napaka){
                       return res.status(400).json(napaka);
                    }else{
                        return res.status(200).json({
                            zeton : generiranZeton,
                            "sporočilo" : "Žeton uspešno dodan."
                        });
                    }         
                }
    )
Dana koda na zahtevo generira žeton za potrebe resetiranje gesla in lepo deluje, imam pa problem, ker zadeva tudi deluje, ko določen dokument z mailov v bazi ne obstaja. Ne razumem zakaj mi aplikacija vedno vrne status 200, vred z generiranim žetonom
.

DamijanD ::

A si debagiral? kaj je v tem primeru v req.body.ePosta?

acookook ::

ePosta je v tem primeru e-pošta (po točnem določenem vzorcu). Ideje kako debugirati mongota niti nimam, pričakoval bi, da vrne status, ki ni 200 al pa nek hint, da se ni zgodilo nič, da na podlagi tega strežniku rečem naj ne pošiljam nepotreben mail na e-pošto osebe, ki v bazi ne obstaja
.

acookook ::

Ok sem pogruntal. Tudi če se ne posobi nič se query "pravilno" izvede in mi mongo/mongoose vrne json kjer je ena od vrednosti "nModified": stevilo_modificiranih. Simply preberem to vrednost in krmilim app na podlagi te vrednosti
.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Spletno gostovanje za več manjših projektov

Oddelek: Izdelava spletišč
7889 (690) bluefish
»

Nova različica podatkovne baze PostgreSQL 9.5 prinaša obilico novosti (strani: 1 2 )

Oddelek: Novice / Ostala programska oprema
5717714 (14580) McAjvar
»

IBM, JP Morgan, Fundacija Linux in ostali gradijo nov "blockchain"

Oddelek: Novice / Kriptovalute
2515588 (13050) bbbbbb2015
»

Kombinacija relacijske/nerelacijske podatkovne baze

Oddelek: Programiranje
81988 (1595) AndrejO
»

[baze] Povezava do slike ali BLOB?

Oddelek: Programiranje
101658 (1455) BlueRunner

Več podobnih tem