Oracle & XML |
Oracle & XML |
16.04.2003, 18:36:55
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) |
Jaka jest wydajnosc przeszukiwania pola typu SYS.XMLType przez zapytanie SQL - Czy jest roznica wzgledem normalnego przeszukiwania rekordow ?
Jezeli tak to czy jest bardziej wydajna metoda umieszczania XMLa w bazie (Moze w CLOB) ? Jaka jest max ilosc danych, ktore mozna trzymac w tej kolumnie (sys.XMLType)? |
|
|
17.04.2003, 13:25:52
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) |
Przy wyszukiwaniu po polach typu XMLType, granicę wydajności wyznacza mechanizm XPath. Z tego co wiem, wydajność utrzymuje się na podobnym poziomie co np. proste zapytanie z użyciem wyrażenia regularnego (czyli nieźle). Nie jest to oczywiście ta sama wydajność co przy przeszukiwaniu prostego indeksu typu integer, ale nie ma się raczej co obawiać, że nie doczekamy się na wyniki.
O ile się orientuję, to XMLType jest rozszerzeniem typu CLOB i posiada te same ograniczenia (czyli chyba 4 GB). Jest to chyba najwydajniejsza metoda przechowywania danych jako XML. Trzeba tylko dobrze dobrać poziom uogólnienia, poziżej którego dane są już strukturą XML wewnątrz 1 pola, a powyżej którego rozbijamy dane na tabele. Dane które są intensywnie przeszukiwane i wiązane relacjami - do tabel. Dane które są głównie odczywywane, a tylko niekiedy trzeba je przyciąć do podzbiorów - do wewnątrz pola typu XMLType. BTW: Zaznaczam, że mam znikome doświadczenie w Oracle'u. Po postach widać jednak, że nie tylko ja. Fajnie, że chociaż Seth stawia sobie poprzeczkę wysoko. :wink: -------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
17.04.2003, 14:08:17
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) |
Tez myslalem, ze ten typ musi posiadac duza pamiec ale po probie wrzucenia prze TOADa do bazy xmla uzywajac:
Kod INSERT INTO [...] t_xml) VALUES ([...],sys.XMLType.createXML('<?xml version="1.0" encoding="utf-8" ?>[...]'))
wywalilo mi blad: Cytat string literal too long
troche to dziwne bo xml wazyl zaledwie 20 KB... ciekaw jestem co moze byc nie tak ? |
|
|
17.04.2003, 15:06:27
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) |
Może to problem z obsłużeniem samego STRING'a z zapytaniem, przez któryś z elementów pośredniczących w przesyłaniu danych, a nie wina dopuszczalnej objętości pola?
-------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
18.04.2003, 12:29:39
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) |
Hmm byc moze to przez TOADa. I tak i tak bede musial napisac prgram do wrzucania XMLa do bazki, wiec wtedy wszystko sie wyjasni.
I jeszcze mam takie pytanie. Procesy odpowiedzialne za obsluge XMLa sa po stronie servera i nie wymagany jest client Oracla 9i aby przetworzyc zapytanie moze byc wczesniejszy ? |
|
|
4.05.2003, 15:19:12
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) |
Troche pozno odpisuje ale moze komu sie to przyda.
Otoz proble 'literal to long' byl spowodowany tym, ze wstawiajac do zapytania xmla w ' ' (cudzyslowiach) automatycznie jest to uznawane za VARCHAR2, ktory ma tylko 4000 znakow do dyspozycji. Rozwiiazaniem jest stworzenie zmiennej typu CLOB (4GB pamieci). Przyklad zastoswania (procedura PL/SQL): Kod CREATE or REPLACE PROCEDURE przykladXML IS
xmlData CLOB; BEGIN xmlData := '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <cos> <inne nazwa="cvcvc" /> <inne2>xcvxc</inne2> (...) </cos>'; INSERT INTO jakas_tabela (kolumna) VALUES (XMLTYPE(xmlData)); END przykladXML; Taki maly blad a jednak potrafi troche namieszac. |
|
|
Wersja Lo-Fi | Aktualny czas: 21.05.2024 - 18:29 |