6

Nie proszę o opinie, ale o dokumentację.Procedura składowana lub kod

Mamy wiele plików danych (XML, CSV, Plantext, etc ...) i trzeba je przetworzyć, dane je kopną.

Główna osoba prowadząca bazę danych zaproponowała użycie procedury składowanej do wykonania zadania. Zasadniczo mamy tabelę pomostową, w której plik jest serializowany i zapisywany w klamrze lub kolumnie XML. Następnie stamtąd zasugerował, aby dalej korzystać z procedury przechowywanej do przetwarzania pliku.

Jestem programistą z db tłem, bardziej w rozwoju aplikacji, i mogę być stronniczy, ale użycie tej logiki w DB wydaje się złym pomysłem i nie jestem w stanie znaleźć żadnej dokumentacji do udowodnienia lub odrzucenia co mam na myśli, jako umieszczenie samochodu na torze pociągu, aby wyciągnąć ładunek.

Moje pytania brzmią: Jak dobrze funkcjonuje DB (Oracle, DB2, MySQL, SqlServer), gdy mówimy o wyszukiwaniu wyrażeń regularnych, wyszukiwaniu i zamianie danych w clob, dom traversal, rekursji? W porównaniu do języka programowania takiego jak Java, PHP lub C# w tych samych problemach.

Edit

Więc co szukam jest dokumentacja na analizie porównanie/wykonawczego określonego języka programowania porównać do DBMS, w szczególności do wyszukiwania łańcucha i zastąpić regularne wyszukiwania wyrażenie i wymienić. XML Dom Traversal. Wykorzystanie pamięci w rekursywnych wywołaniach metod. A w szczególności, jak dobrze skalują się po napotkaniu na 10 - 100 gigabajtów danych.

+1

SP: s są dobre do selekcji i agregacji. Z łatwością stają się niepojętym bałaganem, gdy w grę wchodzi inne przetwarzanie (łańcuch, parsowanie, matematyka itd.). Czy wydajność jest naprawdę problemem? – adrianm

+0

Utrzymanie nie jest jedną z moich obaw, ponieważ gdybyśmy mieli śledzić trasę używania SP, to nie utrzymuję systemu, DBA jest. Ale nie chcę stać bezczynnie, gdy widzę, że robi się coś głupiego, więc tylko dla mnie argument, który jest ważny dla niego, mogę zrobić to lepiej i bardziej wydajnie, ponieważ zmienna utrzymania bierze moje równanie. – Churk

+1

"eksploracja danych" jest terminem bardzo przeładowanym. Może to oznaczać wszystko, od średnich obliczeniowych do złożonych metod statystycznych $ O (n^3) $ lub gorszego środowiska wykonawczego. Proszę bardziej precyzyjnie. Ponieważ niektóre rzeczy będą oczywiście łatwe do wykonania przy użyciu procedur przechowywanych. Inne będą uciążliwe w ten sposób! –

Odpowiedz

1

Wygląda na to, że zamierzasz rzucić logikę biznesową na warstwę pamięci masowej. W przypadku operacji takich jak opisujesz, nie powinieneś używać bazy danych. Możesz skończyć próbując znaleźć obejścia dla showstopperów lub stworzyć dziwaczne rozwiązania ze względu na brak elastyczności.

Należy również zachować łatwość konserwacji. Ile osób będzie później w stanie utrzymać rozwiązanie?

Mówiąc o prędkości, wybierając odpowiedni język programowania, będziesz mógł przetwarzać dane w wielu wątkach. Na koniec twoje odczucia z samochodem w pociągu są słuszne;)

+0

Rozumiem to wszystko. Ale potrzebuję dokumentacji tego, co wyjaśni zdrowy rozsądek. Bez jakiejś dokumentacji moja argumentacja jest tak samo ważna, jak ja w to wierzę, ale nie jestem ekspertem. Tak jak mówię, jestem programistą aplikacji i zdecydowanie nie wierzę w umieszczanie logiki w warstwie magazynowej. Mam więc nadzieję, że ktoś w społeczności mógł przeczytać coś, co może usprawiedliwić to, co uważam za prawdziwe. – Churk

+0

Nie ma sensu przyjmowanie odpowiedzi. Argumenty, których szukasz, są aksjomatami w tworzeniu oprogramowania. Znajdziesz na ten temat mnóstwo dokumentów. Nie ma złej myśli o twoim punkcie, możemy po prostu dać ci więcej argumentów, takich jak łatwość konserwacji i możliwość równoległego algorytmu poprzez jego zaprogramowanie. –

+0

Zgodnie z twoją edycją, rajd powinien zrobić to poza warstwą DB. Jesteś znacznie bardziej elastyczny, szczególnie w "XML Dom Traversal" i "rekursywnych wywołaniach metod", które w żaden sposób nie są częścią warstwy pamięci masowej. Jeśli twój DBA zamierza to wszystko zrobić, będzie to tylko dowód koncepcji, który zajmie DŁUGI czas i koszt niewiarygodnych pieniędzy. Mogę po prostu powtórzyć mi i inne odpowiedzi: Warstwa magazynowania nie jest stworzona do tego, w naturalny sposób będzie działać znacznie gorzej. –

1

Lepiej wyciągnąć logikę przetwarzania z warstwy danych. Tworzenie profili w bazie danych będzie trudne.

Masz swobodę i możliwość wyboru między bibliotekami i porównywania ich wydajności, jeśli implementacja odbywa się w dowolnym języku. Co więcej, możesz wybrać frameworki takie jak (Spring-Batch for Java) do przetwarzania dużej ilości danych jako proces wsadowy.

Powiązane problemy