Spartacus

Statistika

Pridružen/a:
23 dec 2007, 14:01
Zadnjič aktiven:
25 jul 2026, 08:08
Prispevki:
Teme:
30 | Vse teme
828
38
4
#4

Ker imaš verjetno target framework na 4.0 (ali manj), System.Security.Claims je pa iz 4.5


všeč(0) ni všeč(0) spam(0)
#1

Te reference ne daš kot childa v system.web, ampak nivo višje, če se ne motim...



http://msdn.microsoft.com/en-us/library/hh568638(v=vs.110).aspx


všeč(0) ni všeč(0) spam(0)
#5

Evo, preverjena koda tvojega prvega primera. Ampak bodi pozoren, da bo XML well-formed - torej, da ima root node (v primer sem dodal <records>). Drugače bo prišlo do napake.



Če izvirni XML tega nima, preberi XML kot string, mu sam dodaj root node in uporabi LoadXml (kot v mojem primeru).


protected void Page_Load(object sender, EventArgs e)
{

string xmlString = @"<records><record>
<PostnaStevilka>8341</PostnaStevilka>
<NazivPoste>Adlešiči</NazivPoste>
</record>
<record>
<PostnaStevilka>5270</PostnaStevilka>
<NazivPoste>Ajdovščina</NazivPoste>
</record></records>";

XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);

XmlNodeList colorList = doc.SelectNodes("records//record");
foreach (XmlNode dataSource in colorList)
{
comPosta.Items.Add(dataSource["PostnaStevilka"].InnerText + " " + dataSource["NazivPoste"].InnerText);
}
}
všeč(0) ni všeč(0) spam(0)
#12

Evo ti minus. Zakaj? Ker je brezvezen komentar, ki nima veze z originalnim vprašanjem. Zakaj pt.2? Ker sem že eksplicitno napisal, da se v te debate ne spuščam. Ker se mi ne da. Ker so zgolj 'versko prepričanje'.



Imaš predlog? Tudi na ne-microsoftovi tehnologiji? Bo več kot dobrodošel in se ti bom zanj lepo zahvalil.


všeč(4) ni všeč(1) spam(0)
#3

Ti gledaš ".Attributes", teh pa nimaš. Glede na tvoj XML moraš gledat dataSource.Item["PostnaStevilka"] in dataSource.Item["NazivPoste"].



(nisem testiral te opcije, pišem iz glave)


všeč(0) ni všeč(0) spam(0)
#1

Takole: http://stackoverflow.com/questions/4721436/binding-xml-to-combobox ?



Sicer pa:


dataSource.Attributes[**"PostnaStevilka,NazivPoste"**].Value.ToString()

Tole ne bo šlo skozi, indekserja ne moreš uporabit tako, da bi mu kar z vejico naštepal, kaj ti mora vrnit - bo treba kar vsakega posebej :)


všeč(0) ni všeč(0) spam(0)
#9

Ah, pomanjkljive informacije.



Tale web aplikacija zaradi drugih funkcionalnosti že drži v cache-u podatke o izdelkih (za prikazovanje) in lastnostih (za generiranje obrazca za filtriranje) - v obliki DataTable objekta. Dodaten razlog za to je tudi podpora za B2B (kjer imajo lahko različni uporabniki različne rabate, torej se cene izračunajo sproti, pri branju iz baze)



Bottleneck tukaj je sam postopek v aplikaciji, ko je treba prikazat izdelke, ki ustrezajo filtru. Trenutno je zadeva takšna: ko so pogoji nastavljeni, dobim idje vseh izbranih lastnosti (property). Potem iz tabele Product_Property (iz baze, ker 8 mio zapisov hranit v cache-u je ogromno) preberem vse idje izdelkov, ki ustrezajo tem lastnostim. Na podlagi idjev izdelkov pa nato (iz cache-a) izpišem ustrezne izdelke. Kako čimbolj optimalno narest ta postopek? Stvar sicer deluje, ampak ne pri takšni količini podatkov :)



Kopiranje baze pa zaradi integritete podatkov tudi ne pride v poštev (podatki se lahko spreminjajo iz minute v minuto, ali pa samo enkrat na dan). Moram pa se pozanimat, kako je z dodajanjem indeksov na obstoječe tabele. Žal (zaradi obstoječe rešitve) obstajajo določene omejitve oz. omejen manevrski prostor :)



Vsem dosedanjim komentatorjem pa najlepša hvala! Seveda so kakršnikoli drugi namigi še vedno več kot dobrodošli :)


všeč(0) ni všeč(0) spam(0)
#2

Na kakšen način bi pa v "ne .NET" tehnologiji obdeloval takšne količine podatkov? V katerem jeziku oz. skripto, na kakšen način? Mislim, da je tole lahko precej splošen problem in ni (toliko) omejen na tehnologijo.



Aja, pa gre za web aplikacijo (integracijo), torej so performance, cache, ipd. seveda hudo pomembne zadeve. Še več: ker imajo različne stranke lahko različne cene (B2B in B2C), se le te izračunajo ob branju iz baze in nato hranijo v cache-u.



Pa še offtopic: ne bi se zdej spuščal v debate za/proti .NET :) Ker, ko se kakšna brihta oglasi, kako je PHP (al pa bognedaj Java) boljša od njega, ga sploh ne jemljem kot resnega sogovornika :) Pa ne zato, ker bi imel kaj proti opisanim jezikom, ampak čim nekdo favorizira neko tehnologijo, vse druge pa proglasi za neuporabne, je to zame znak omejenega mindseta. Vsakemu (developerju ali pa projektu) svoje. Ampak ta komentar kar zaključimo tu, ker me zanima bilokakšna rešitev opisanega problema.


všeč(1) ni všeč(0) spam(0)
#

V SQL (Firebird SQL) bazi imam 3 tabele: Product (podatki o izdelkih), Property (možne lastnosti izdelkov) in Product_Property (lastnosti posameznih izdelkov, vmesna tabela)





Trenutno skupaj sestavljam filter (.NET web forms), ki bo na podlagi izbranih lastnosti vrnil spisek izdelkov, ki ustreza kriteriju. Do te točke je vse fine and dandy.



Problem pa se pojavi pri scenariju, ko gre za ogromno bazo: cca 200k izdelkov (Product), 40k lastnosti (Property) in približno 8 mio lastnosti izdelkov (Product_Property). Samo filtriranje traja precej predolgo, če program že vmes ne odleti zaradi premalo pomnilnika.



Ima kdo kakšen namig, izkušnjo, karkoli kako se te zadeve lotit? Kot že rečeno, gre za FirebirdSql bazo, na katero se .NET aplikacija poveže s pomočjo Firebird.NET providerja.



Hvala!



p.s.: Ker gre za integracijo na obstoječ sistem, bilokakšna prekopavanja baze ne pridejo v poštev. Lahko se doda kakšna zadeva, obstoječih tabel pa se ne sme dotikat.


všeč(0) ni všeč(0) spam(0)