OpenEdge 12

Stało się! Zgodnie z zapowiedziami nowa wersja OpenEdge 12 jest już na rynku. Jak zwykle gdy pojawia się nowy produkt z wyższym głównym numerem towarzyszy mu szczególnie duże zainteresowanie. Jakie najciekawsze nowości niesie ze sobą OE12? Było na ten temat w necie kilka webinarów, firma Galeos dostarczyła jeden po polsku, ale ja chciałem spojrzeć na nowego OpenEdge’a od strony praktyczno-technicznej.

Sztandarową nowością jest szybszy serwer baz danych, zawdzięczający tę poprawę dzięki kilku istotnym usprawnieniom.

Do wersji OE11 włącznie, serwer bazy danych OpenEdge obsługuje żądania od klientów zdalnych w sposób seryjny – jedno po drugim. Jeśli którekolwiek z żądań nie może być od razu obsłużone, na przykład, gdy istnieje blokada rekordu, żądanie to jest zawieszane i przesyłane na tył kolejki. Jeśli blokada rekordu zostanie zwolniona, klient i tak nadal czeka na swoją kolej. W OE12 serwer bazy może obsługiwać klientów zdalnych jako proces wielowątkowy. Służy do tego parametr -threadedServer 1, który jest włączony domyślnie. Równoległe przetwarzanie żądań poprawia wydajność poprzez usprawnienie mechanizmu oczekiwania na zwolnienie blokady (lock wait processing), odseparowanie od połączeń OLTP itp.

Drugą istotną zmianą w technologii jest możliwość obsługi złączeń z kilku tablic po stronie serwera (Server-Side Join). Do tej pory złączenia te były realizowane po stronie klienta, przez co przez sieć była transportowana znacznie większa ilość danych niż ta, która była istotna w zapytaniu. W OE12 takie zapytania są rozwiązywane po stronie serwera. Tylko rekordy, które spełniają warunki zapytania, są przesyłane do klienta, co znacząco poprawia wydajność. Obsługiwane są połączenia FOR EACH do 10 tablic. Funkcja jest włączana parametrem -ssj 1 i wymaga wielowątkowego serwera.

Trzecim elementem jest usprawnienie problemu występowania konfliktów dostępu do tablicy BHT (Buffer Hash Table).  Mechanizm BHT pozwala w wydajny sposób sprawdzić czy żądany blok z danymi znajduje się już w puli buforów, czy też trzeba go wczytać z dysku. Różne procesy walczą o aktualizację tablicy BHT, co wymaga dostępu do zapadek (latch) i tu występują konflikty. Wprowadzono (od 11.7.3) parametr -hashLatchFactor określający ilość zapadek jako procent parametru –hash. Mechanizm ten poprawia współbieżność dla losowego dostępu do puli buforów bazy danych.

Progress Software twierdzi, że powyższe nowości mogą przyspieszyć działanie serwera aż trzykrotnie i to bez jakichkolwiek zmian w samej aplikacji!

PASOE: W nowym serwerze aplikacji wprowadzono PASOE HealthCheck – proces który monitoruje serwer i system operacyjny i określa relatywny „stan zdrowia” agenta PASOE.

Te informacje mogą być użyte do podjęcia działań w celu uzdrowienia PASOE.

Na przykład w nowym interfejsie API mamy StopAgent API, którego zadaniem jest wycofanie bieżącej instancji serwera z eksploatacji (zatrzymanie akceptowania nowych żądań, zakończenie przetwarzania bieżących żądań i wyłączenie); jednocześnie startuje nowa instancja serwera.

Replication AI File Streaming: wprowadzono ulepszony mechanizm w OE Replication.

Serwer replikacji wysyła dane AI w taki sam sposób, jak w poprzedniej wersji (opisanej we wcześniejszym artykule nt OE11), ale wielowątkowy agent replikacji buforuje przychodzące bloki AI w buforze bloku replikacji (RSB). Bloki te są następnie odczytywane z bufora RSB i zapisane w bazach target. Ten mechanizm eliminuje kolejkowanie bloków AI po stronie bazy Source i utratę części danych w przypadku awarii.

Progress Development Studio

Wprowadzono sposób poprawienia jakości kodu ABL dodając Analizator Kodu ABL SonarLint, który stale analizuje i mierzy jakość kodu pokazując problematyczne miejsca. Zawiera także zalecenia jak rozwiązać napotkane problemy, jak lepiej napisać kod. Pomaga to osiągnąć lepsze praktyki kodowania i poprawić wydajność aplikacji.

Analizator można uruchomić dla określonego pliku, zestawu plików, ostatnio zmienionych plików lub nawet całego projektu.

Pierwszym krokiem jest ustawienie w preferencjach zasad i i innych parametrów.

Następnie w istniejącym projekcie wywołujemy Analizę pliku lub plików.

W tym prostym przykładzie, jeśli np. w kodzie jest definicja zmiennej, do której nie ma odniesienia w dalszej części kodu, jest to zgłaszane w Raporcie z analizy.

Zaktualizowany został zestaw kontrolek .NET. OpenEdge 12.0 używa Infragistics NetAdvantage dla .NET.

Tyle wybranych nowości jakie niesie ze sobą nowa wersja OpenEdge 12. Więcej szczegółów szukajcie na stronach Progress Software.