Marcin Chyłek Blog

Ruby on Rails (RoR) with Oracle

Na stronie ORACLE został opublikowany artykuł o połczeniu bazy ORACLE (do przykładu została użyta baza Oracle Database 10g XE) z Ruby on Rails. Artykuł zawiera instalację pod systemem Linux i Windows i sposób użycia.

Na liście znalazły się takie pakiety jak:

  • actionmailer - E-mail support
  • actionpack - Controller and View Framework
  • actionwebservice - Web Service Support
  • activerecord - Object Relational Mapping Layer
  • activesupport - Utility Classes Used by Rails
  • Rails - Ruby-based MVC Web Application Framework
  • Rake - Ruby Build Program

Źródło dokumentu: http://www.oracle.com/technology/pub/articles/saternos-ror-faq.html

Kategoria: Bazy danych, Oracle | Marcin Chyłek | Komentarze: 0

PDO prepared statements a wydajność zapytań SQL

Na forum php.pl pojawił się post z pytaniem czy zastosowanie prepared statements wpływa na wydajność zapytań.

Troszeczkę teorii:

Jak to wygląda od strony ORACLE:

Zanim dane zostaną zwrócone z bazy danych, po odebraniu odpowiedniego kodu baza danych Oracle musi wykonać określone czynności:

  • tworzenie kursora
  • proces parsowania zapytania jeśli nie istnieje w obszarze wspólnym. Na proces ten również wchodzi kilka etapów:
    • analiza zapytania - sprawdzenie czy zapytanie składniowo jest poprawne
    • sprawdzenie odwołań do obiektów
    • sprawdzenie uprawnień
    • modyfikacja zapytania, w celu uzyskania zapytania równoważnemu danemu, ale wykonywanemu efektywniej
    • przygotowanie planów wykonania na podstawie statystyk, wskazówek
    • wybranie najlepszego planu wykonania (najmniejszy koszt wykonania)
    • zapisanie do obszaru wspólnego

    Wykorzystanie wcześniejszego zapytania jest możliwe tylko wtedy, kiedy:

    • tekst zapytania jest taki sam (wchodzą w to również komentarze i białe znaki),
    • polecenie musi odwoływać sie do tych samych obiektów w bazie danych,
    • zmienne wiązane muszą się tak samo nazywać i być tego samego typu.
  • przygotowanie zapytania
  • podwiązanie zmiennych
  • wykonanie zapytania
  • zwrócenie rekordów do użytkownika

Jeśli do bazy danych jest wysyłane takie samo zapytanie proces parowania nie jest wykonywany, przez co wydajność wzrasta bo pewna czść operacji jest pomijana.

Czy zawsze stosować takie rozwiązanie?

Są przypadki zapytań dla których najlepszy plan pierwszego wykonania dla pewnych parametrów jest nieoptymalny i zaleca się nie stosowanie zmiennych wiązanych.

MySQL:

Jeśli chodzi o bazę danych MySQL mechanizmy nie są aż tak bardzo zaawansowane ale pewne rzeczy są zaimplementowane.

Więcej na stronie: http://dev.mysql.com/tech-resources/articles/4.1/prepared-statements.html

Jak PDO wpływa na wydajność

PDO udostępnia funkcje do tzw bind’a (w literaturze polskiej spotkałem się z określeniem zmienna wiązana), w którym możemy przekazać wartość jaka ma być podstawiona pod zmienną, która w późniejszym etapie zostanie wysłana do bazy. Możemy wysłać zapytanie tylko jeden raz, następnie podstawiać wielokrotnie a następnie wykonywać. Dodatkowo PDO chroni przed atakami SQL Injection.

Post z forum.php.pl: http://forum.php.pl/mysqli-prepared-statements-t54025.html

Kategoria: Bazy danych, PHP | Marcin Chyłek | Komentarze: 0

PostgreSQL - Procedural Language (przyszłość języków)

Używając PostgreSQL’a możemy wykorzystywać kilka języków proceduralnych:

  • PL/pgSQL podobny składnią do języka PL/SQL w bazie Oracle
  • języki skryptowe: PL/Perl, plPHP, PL/Python, PL/Ruby, PL/sh i PL/Tcl
  • kompilowane: C, C++, PL/Java
  • PL/R

PostgreSQL jest często wykorzystywany przez programistów serwisów WWW (konfiguracja w postaci PostgreSQL + PHP) to mimo tego, że istnieje język plPHP to obecnie najpopularniejszym językiem jest PL/pgSQL - dlatego pewnie, że wywodzi się od PL/SQL (Oracle).

Zastanawiam się dlaczego tak się dzieje, co powoduje że nie używa się pozostałych języków? Weźmy na przykład Ruby - oczywiście w bazie PostgreSQL mamy możliwość jego wykorzystania. PL/Ruby jest rozwijany od 2002 roku, mimo wielkiej popularności Ruby wśród programistów PHP język raczej nie należy do tych prężnie się rozwijających. C, C++ dlaczego nie? Prawie każdy programista miał styczność z tymi językami a jednak PL/pgSQL.

Przeglądając TODO Postgresa i MySQLa widać, że developerzy tych baz starają się implementować większość funkcjonalności, które firma Oracle wprowadziła do swojej bazy jakiś czas temu. Tak czy inaczej Oracle jest pionierem na rynku jeśli chodzi o bazy danych i wprowadzenie zmian lub dodanie nowych mechanizmów powoduje, że reszta systemów bazodanowych podąża za nimi.

Czy warto wdrożyć plPHP czy PL/Ruby? Każdy musi na to pytanie sobie sam odpowiedzieć.

Dla osób chcących wdrożyć się w PL/Ruby lub plPHP zapraszam na:

PL/Ruby
plPHP

Kategoria: Bazy danych, PostgreSQL | Marcin Chyłek | Komentarze: 1

Pierwszy post

Jak na każdym blogu musi być ten pierwszy post. Mam nadzieję że z biegiem czasu postów jak i komentarzy będzie przybywać.

O czym będę pisał, hmmmmm począwszy od SQLa a skończywszy na PHP. Zagadnienia związane z MySQL coś z nowości, PostgreSQL, Oracle. Mam nadzieję że moje chęci nie skończą się na pierwszym poście.

Kategoria: Inne | Marcin Chyłek | Komentarze: 1