Komunikat nr ZP08-0270 z dnia 17 czerwca 2008

Transkrypt

Komunikat nr ZP08-0270 z dnia 17 czerwca 2008
IBM Europe: komunikat dotyczący oprogramowania
ZP08-0270 z dnia 17 czerwca 2008
IBM solidDB V6.1 – baza danych rezydująca w pamięci
rozszerza ofertę oprogramowania firmy IBM w zakresie
zarządzania danymi
Spis treści
W kilku słowach
Przegląd
Opis
W kilku słowach
Oprogramowanie IBM solidDB V6.1, IBM solidDB Cache for DB2 V6.1 i IBM solidDB V6.1, IBM solidDB Cache
for IDS V6.1 pozwala na rozszerzenie funkcjonalności w trzech środowiskach, jako:
autonomiczny serwer danych solidDB
pamięć podręczna solidDB dla serwera danych DB2
pamięć podręczna solidDB dla serwera danych IDS
Cechy kluczowe serwera solidDB:
Zapewnia wysoką wydajność: Oprogramowanie solidDB zostało zaprojektowane do
przechowywania wolumenu danych w pamięci operacyjnej zamiast dysku. Jednocześnie
aplikacje mogą korzystać z pełnej funkcjonalności bazy za pośrednictwem standardowych
interfejsów ODBC, JDBC i języka SQL.
Gwarantuje wysoką dostępność: Środowisko solidDB można skonfigurować tak, aby
obsługiwało dwie kopie danych synchronizowane praktycznie przez cały czas. W
przypadku awarii systemu baza danych solidDB zezwala aplikacjom na przywrócenie
dostępu do bazy danych w czasie poniżej sekundy.
Pomaga zredukować koszty: Serwer danych solidDB jest łatwy we wdrożeniu i
administracji. Możliwość wbudowania bazy bezpośrednio w środowisko aplikacji, redukuje
liczbę czynności administracyjnych zmniejszając całkowity koszt utrzymania. Można
zapomnieć o stosowaniu dedykowanych narzędzi administracyjnych.
Przegląd
Oprogramowanie IBM solidDB V6.1 jest wysokiej wydajności relacyjną bazą danych, rezydująca w pamięci.
Umożliwia ona uzyskanie wysokiej wydajności — operacje są wykonywane nawet dziesięć razy szybciej w
stosunku do tradycyjnych, „dyskowych” baz danych. Dzięki zastosowaniu języka SQL, umożliwia istniejącym
aplikacjom osiągnięcie dziesięciu tysięcy transakcji na sekundę z czasami reakcji mierzonymi w mikrosekundach.
Niezależnie od tego, czy serwer solidDB jest wdrażany, jako pamięć podręczna dla IBM DB2® lub IDS, czy jako
autonomiczna baza danych, gwarantuje szybki dostęp do danych. Wzrost wydajności ma szczególne znaczenie
w przypadku częstego i jednoczesnego dostępu do danych przez wielu użytkowników – szczególnie w systemach
obsługi rezerwacji i sprzedaży biletów, platformach gier internetowych, w przetwarzaniu transakcji i generowaniu
ostrzeżeń, aplikacjach e-commerce czy oprogramowaniu świadczonemu w modelu Software as Service (SaaS).
Ponad to integracja z istniejącymi serwerami baz danych firmy IBM, pozwala na buforowanie danych celem
uzyskania dodatkowej mocy obliczeniowej, wymaganej w chwilach największego obciążenia w aplikacjach takich,
jak systemy obsługi klienta czy systemy akcyjne.
IBM solidDB pomaga w osiągnięciu wysokiej dostępności, umożliwiając powrót do pracy po awarii systemu w
czasie poniżej jednej sekundy. solidDB dostarcza rozwiązania opartego o dwa węzły pracujące w trybie pełnej
gotowości i zachowujące zsynchronizowane wersje bazy danych. Taką architekturę można również oprzeć na
rozwiązaniu solidDB Cache dla baz danych DB2 lub IDS, uzupełniając tym samym funkcje zwiększenia
dostępności i odzyskiwania systemu po awarii (HADR) tych serwerów danych oraz uzyskując bardziej
kompleksowe rozwiązanie.
solidDB pozwala osiągnąć wysoką wydajność i poziom dostępności do danych, którego nie są w stanie
zagwarantować tradycyjne serwery bazodanowe. Ograniczenie planowanych i nieplanowanych przerw oraz
zredukowane opóźnienia systemu, pozwalają na znaczącą redukcję kosztów utrzymania. Zintegrowanie
IBM jest zastrzeżonym znakiem towarowym firmy International Business Machines Corporation.
1
administracji bazą danych na poziomie aplikacji, umożliwia dalsze obniżenie kosztów i skrócenie czasu wdrażania
aplikacji. Ponadto serwer solidDB współpracuje ze sprzętem różnej klasy – od średniej po wysoką. Pozwala to
klientom na dobór rozwiązań ściśle dopasowanych do ich potrzeb.
Planowane terminy dostępności:
24 czerwca 2008 (dystrybucja oprogramowania w formie elektronicznej).
25 lipca 2008 (dystrybucja nośników).
Opis
Wysoka wydajność
Osiąganie wysokiej wydajności dzięki bazom danych rezydujących w pamięci.
Wysoka przepustowość i przewidywalne czasy reakcji są kluczowymi cechami, wymaganymi przez aplikacje
działające w czasie rzeczywistym. Dzięki przechowywaniu wolumenu danych w pamięci, a nie na dysku, solidDB
spełnia te wymagania, gwarantując bardzo szybki dostęp do danych.
Rysunek 1: Porównanie serwera solidDB i tradycyjnych, dyskowych baz danych, mierzone w
maksymalnej kwalifikowanej przepustowości (MQTH).
Dzięki wyeliminowaniu operacji dyskowych, w porównaniu do tradycyjnych baz danych, solidDB zapewnia
większą przepustowość transakcji oraz krótsze i jednolite czasy reakcji.
Na rysunku 1 przedstawiono wyniki testu wzorcowego Telecom One, podczas którego porównano wydajność
bazy solidDB rezydującej w pamięci z wydajnością tradycyjnych baz danych. Telecom One jest programem do
testowania wzorcowego baz danych, opracowanym przez firmę Solid (należącą do grupy IBM). Został on
przygotowany na kanwie pracy naukowej, opublikowanej na Uniwersytecie Helsińskimw 2003 roku i zawierającej
metodę wzorcowania zaprojektowanej na potrzeby aplikacji komunikacyjnych. Więcej na temat testu wzorcowego
Telecom One można znaleźć pod adresem:
http://www.solidtech.com/en/developers/CarrierGrade/tm1.asp
IBM jest zastrzeżonym znakiem towarowym firmy International Business Machines Corporation.
2
Powyższy test został przeprowadzony na systemie z dwoma procesorami dwurdzeniowymi Intel@ Xeon 2,66
GHz i 4GB pamięci RAM z systemem operacyjnym Windows® Server 2003 SP2. Test zrealizowano za pomocą
oprogramowania Telecom One Benchmark w wersji 4.1 z zastosowaniem 10-minutowego generatora danych i
20-minutowego próbkowania. Serwer solidDB skonfigurowano do asynchronicznego rejestrowania przy użyciu
połączonej biblioteki, z 5-minutowym interwałem tworzenia punktów przywracania, na 128 jednocześnie
działających komputerach klienckich symulujących działania 100 000 abonentów telefonów komórkowych. Wynik
pokazuje Przedstawia on blisko 10-krotnie większą wydajność na korzyść serwera solidDB wobec klasycznych
serwerów baz danych.
Bazy danych rezydujące w pamięci operacyjnej, muszą spełniać szereg warunków wysokiej dostępności do
danych. Dlatego stosowane w nich struktury danych oraz metody przechowywania, wyszukiwania i przetwarzania
danych muszą być zoptymalizowane pod kątem innego nośnika danych. Ważnym czynnikiem jest także
zapewnienie wydajnych mechanizmów sterowania współbieżnymi procesami. W rezultacie takie rozwiązanie w
zestawieniu z tradycyjnymi bazami posiada dwie kluczowe zalety. Po pierwsze, wyeliminowana została
konieczność przenoszenia bloków danych z dysków do pamięci operacyjnej. Po drugie — dzięki dedykowanym
strukturom danych — przetwarzanie danych jest wydajniejsze niż dla buforów w tradycyjnych serwerach.
solidDB adresuje duże bloki pamięci w architekturze 64-bitowej oraz zapewnia wysoką skalowalność dzięki
wykorzystaniu mocy obliczeniowej, oferowanej przez systemy wielordzeniowe i wieloprocesorowe. Mechanizmy
sterowania współbieżnymi procesami umożliwiają przetwarzanie dużej ilości transakcji z czasami reakcji rzędu
mikrosekund, przy jednoczesnym zachowaniu spójności danych. Co więcej, wysoka wydajność jest
zagwarantowana niezależnie od sposobu wykorzystania solidDB – jako pamięci podręcznej dla baz danych IBM
DB2 lub IDS, czy autonomicznego serwera.
Trwałość danych oraz mechanizmy odzyskiwania
solidDB zapewnia nie tylko stały dostęp do danych gromadzonych w pamięci operacyjnej, ale gwarantuje
możliwość odtworzenia zmian. Jest to możliwe dzięki tworzeniu punktów przywracania oraz mechanizmom
rejestrowania transakcji. Podczas tworzenia punktów przywracania aplikacja zapisuje zatwierdzone transakcje z
pamięci operacyjnej do plików znajdujących się na dysku. Pozostałe operacje są zapisywane w dzienniku. W
przypadku awarii serwera solidDB odtwarza spójny obraz danych zapisany w punkcie przywracania, a następnie
podejmuje próbę automatycznego odzyskania transakcji i cofania operacji (roll-forward) na podstawie dziennika.
Celem zrównoważenia wydajności i zapewniania spójności danych, solidDB oferuje różne warianty logowania
transakcji. W przypadku rejestrowania synchronicznego transakcje są zapisywane w chwili ich zakończenia,
natomiast dla rejestracji asynchronicznej logowanie do dziennika jest opóźniane. Co więcej, dzięki tworzeniu
spójnego obrazu danych w punktach przywracania, mechanizm logowania może być wyłączony. Pozwala to
osiągnąć wyższą wydajność aplikacji, w które nie wymagają informacji o transakcjach przeprowadzonych od
ostatniego punktu przywracania.
Przyspieszenie dostępu do danych w bazach DB2 i IDS
Tradycyjne bazy umożliwiają przechowywanie dużych wolumenów danych i obsługę różnych obciążeń. solidDB
zapewnia natomiast wysoką wydajność dostępu do danych. Przeniesienie kluczowych dla wydajności systemu
bloków danych z baz DB2 lub IDS do obszaru pamięci, zarządzanego przez serwer solidDB, łączy zalety obu
środowisk. solidDB zapewnia bowiem aplikacjom krótkie i jednolite czasy reakcji mierzone w mikrosekundach i
wydajność na poziomie dziesiątek tysięcy transakcji na sekundę dla operacji odczytu i zapisu. Jednocześnie
wszystkie zmiany są synchronizowane z bazami DB2 lub IDS, które zapewniają dostęp do danych większej
liczbie aplikacji przy bardziej zróżnicowanych obciążeniach.
Niezależnie od tego, czy serwer solidDB jest wdrażany, jako pamięć podręczna dla IBM DB2® lub IDS, czy jako
autonomiczna baza danych, możliwe jest zwiększenie wydajności systemu poprzez zrównoważenie obciążenia
operacji odczytu pomiędzy instancje bazy danych solidDB , w sposób niewidoczny dla aplikacji. Tworzone jest
bowiem jedno logiczne połączenie do klastra wysokiej dostępności solidDB poprzez sterownik ODBC lub JDBC.
Na poziomie bazy danych operacje są wykonywane na instancji głównej lub instancji zapasowej albo na obu
jednocześnie ze zrównoważeniem obciążenia Pozwala to na zwiększenie wydajności o 100% dzięki
wykorzystanie mocy obliczeniowej obu instancji, zwalniając programistów z pisania dodatkowego kodu. Klaster
wysokiej dostępności redukuje również czas przywrócenia połączeń po awarii systemu.
Konfiguracja wysokiej dostępności pozwala również na optymalizacje rejestrowania transakcji. Możliwe jest
zastosowanie konfiguracji adaptacyjnej, w której instancja główna korzysta z synchronizacji asynchronicznej bez
utraty trwałości danych, zabezpieczonej dzięki synchronizacji z instancją zapasową. W przypadku awarii instancja
zapasowa solidDB przełącza się automatycznie na logowanie synchroniczne, celem zapewnienia spójności
obrazu danych.
Dla bazy solidDB działającej w trybie pamięci podręcznej dla serwerów DB2 lub IDS możliwe jest przekroczenie
limitu pamięci operacyjnej przez duże tabele. Wówczas administratorzy mają możliwość podziału takiej tabeli, na
kilka instancji solidDB, np. dużą tabelę klientów zawierającą 1 000 000 rekordów można podzielić na cztery
instancje solidDB po 250 000 każda, zamiast buforować całość w jednej instancji. Partycjonowanie tabel jest
przydatne przede wszystkim w przypadkach, w którym rozmiar kluczowego dla wydajności bufora danych ma
wielkość rzędu kilkudziesięciu gigabajtów. W takim przypadku do obsługi wolumenu danych zamiast pojedynczej
IBM jest zastrzeżonym znakiem towarowym firmy International Business Machines Corporation.
3
instancji opartej o 64-bitowy serwer z 80 gigabajtami pamięci możliwe jest zastosowanie kilku serwerów średniej
klasy. Możliwe jest również stworzenie rozbudowanej konfiguracji opartej o wiele instancji, stanowiących pamięć
podręczną dla tradycyjnych baz danych, z rozwiązaniem wysokiej dostępności celem zwiększenia poziomu
bezpieczeństwa i wydajności.
Rysunek 2: Partycjonowanie tabeli bazy danych DB2 lub IDS na wiele instancji solidDB umieszczonych
na niezależnych serwerach, celem zwiększenia wydajności aplikacji
Wysoka dostępność
Serwery solidDB pozwalają na odzyskanie pełnej funkcjonalności po awarii systemu w czasie poniżej sekundy,
dzięki czemu zapewniają wysoki poziom dostępności wymagany przez aplikacje, w których wydajność baz
danych jest kluczowym elementem. Dzięki konfiguracji wysokiej dostępności solidDB zachowuje kopie,
zsynchronizowanych pomiędzy dwoma węzłami, danych. Funkcjonalność taka pomaga chronić użytkowników
przed niezaplanowanymi przerwami w działaniu całego systemu, a także umożliwia planowe przeniesienia
obciążenia pomiędzy węzłami. Przywrócenie działania jest niewidoczne dla aplikacji, ponieważ informacje o
połączeniach i atrybutach sesji są obsługiwane przez sterowniki ODBC i JDBC. Innym zastosowaniem takiej
architektury jest możliwość użycia instancji zapasowej do zadań konserwacyjnych (wycofanie aktualizacji,
raportowanie, wykonywanie kopii zapasowej) bez przechodzenia węzła solidDB w tryboffline.
Baza solidDB udostępnia również kilka opcji konfiguracji wysokiej dostępności, określających sposób
synchronizacji dla głównych i pomocniczych serwerów danych. Można je wybrać na poziomie systemu, sesji i
transakcji. Pozwala to użytkownikom w sposób elastyczny równoważyć obciążenie, a także kontrolować spójność
danych i czas przywracania systemu.
Konfiguracja wysokiej dostępności może być również użyta w przypadku bazy solidDB, działającej w trybie
pamięci podręcznej dla baz danych DB2 lub IDS, w których zaimplementowano rozwiązania zwiększenia
dostępności i odzyskiwania systemu po awarii – HADR.
IBM jest zastrzeżonym znakiem towarowym firmy International Business Machines Corporation.
4
Rysunek 3: Konfiguracja wysokiej wydajności solidDB, jako pamięć podręczna dla baz danych DB2/IDS,
z zaimplementowanym rozwiązaniem HADR
Konfiguracja wysokiej dostępności:
Konfigurowanie ustawień replikacji i logowania, umożliwiające zrównoważenie wydajności
a średnim czasem naprawy (MTTR) i zapewnieniem spójności danych
Zestawienie alternatywnego połączenia w przypadku braku dostępności jednej z instancji
solidDB, pracującej w trybie pamięci podręcznej
Przełączanie połączeń niewidoczne dla aplikacji:
Aplikacja obsługuje jedno połączenie logiczne z instancjami bazy solidDB
Parametry połączeń i atrybuty sesji są zachowywane podczas awarii bądź przełączenia
pomiędzy węzłami
Równoważenie obciążenia dla operacji odczytu niewidoczne dla aplikacji
Elastyczna konfiguracja równoważenia wydajności, czasu przywracania połączenia i zapewnienia spójności
danych
solidDB udostępnia kilka wariantów konfiguracji wysokiej dostępności, określających sposób synchronizacji dla
głównych i zapasowych serwerów danych. Konfiguracje te mogą być modyfikowane podczas działania aplikacji w
zależności od sesji lub transakcji. Umożliwia to użytkownikom elastyczne dopasowania poziomu bezpieczeństwa
danych, wydajności aplikacji czy czasu przywrócenia połączenia w przypadku awarii.
Replikacja synchroniczna
Replikacja synchroniczna jest konfiguracją minimalizującą w największym stopniu ryzyko utraty danych.
Scenariusz ten zakłada, iż transakcje nie są zatwierdzane w głównej instancji dopóty, dopóki nie są potwierdzone
przez instancję pomocniczą. Użytkownicy mają do dyspozycji różne warianty ustawień replikacji synchronicznej:
IBM jest zastrzeżonym znakiem towarowym firmy International Business Machines Corporation.
5
Pomocnicza instancja informuje o zatwierdzeniu transakcji w momencie otrzymania
żądania z instancji głównej
Pomocnicza instancja potwierdza zatwierdzenie transakcji w chwili przetworzenia żądania
z instancji głównej, ale przed zapisaniem do logu transakcyjnego.
Pomocnicza instancja informuje o zatwierdzeniu transakcji po zapisaniu jej do logu
transakcyjnego. Takie ustawienie minimalizuje czas przywrócenia połączenia, jednak
zmniejsza wydajność aplikacji. W przypadku awarii głównej bazy danych, pomocnicza
instancja natychmiast przejmuje rolę głównej.
Replikacja asynchroniczna
W przypadku replikacji asynchronicznej transakcja jest zatwierdzania w chwili zakończenia jej przetwarzania na
serwerze głównym. Ustawienie takie nie wymaga oczekiwania na potwierdzenie z poziomu pomocniczej instancji.
Rysunek 4: Wbudowany mechanizm wysokiej dostępności, umożliwiający łatwą integrację z narzędziami
do zarządzania konfiguracjami wysokiej dostępności
solidDB obsługuje różne stany dostępności dla obu serwerów, wskazując ich stan jako tryb aktywny, gotowości
lub inny stan przejściowy, związany z przerwami w połączeniu. Stany te są udostępniane aplikacji, dając
możliwość kierowania żądań do serwerów bądź zmianę ich stanów. Narzędzia do zarządzania konfiguracjami
wysokiej dostępności używają stanów do monitorowania instancji oraz w razie potrzeby przeprowadzenia procesu
przekierowania bądź przywrócenia połączenia.
Niskie koszty
solidDB pozwala osiągnąć wysoką wydajność i poziom dostępności do danych, którego nie są w stanie
zagwarantować tradycyjne serwery bazodanowe. Ograniczenie planowanych i nieplanowanych przerw oraz
zredukowane opóźnienia systemu, pozwalają na znaczącą redukcję kosztów utrzymania. Zintegrowanie
administracji bazą danych na poziomie aplikacji, umożliwia dalsze obniżenie kosztów i skrócenie czasu wdrażania
aplikacji. Ponadto serwer solidDB współpracuje ze sprzętem różnej klasy – od średniej po wysoką. Pozwala to
klientom na dobór rozwiązań ściśle dopasowanych do ich potrzeb.
Opcje wdrożeń solidDB
Niezależnie od tego, czy serwer solidDB jest wdrażany, jako pamięć podręczna dla IBM DB2® lub IDS, czy jako
IBM jest zastrzeżonym znakiem towarowym firmy International Business Machines Corporation.
6
autonomiczna baza danych, gwarantuje szybki dostęp do danych. Wzrost wydajności ma szczególne znaczenie
w przypadku częstego i jednoczesnego dostępu do danych przez wielu użytkowników – szczególnie w systemach
obsługi rezerwacji i sprzedaży biletów, platformach gier internetowych, w przetwarzaniu transakcji i generowaniu
ostrzeżeń, aplikacjach e-commerce czy oprogramowaniu świadczonemu w modelu Software as Service (SaaS).
Ponad to integracja z istniejącymi serwerami baz danych firmy IBM, pozwala na buforowanie danych celem
uzyskania dodatkowej mocy obliczeniowej, wymaganej w chwilach największego obciążenia w aplikacjach takich,
jak systemy obsługi klienta czy systemy akcyjne.
solidDB pozwala na umieszczenie w specjalnych strukturach, rezydujących w pamięci operacyjnej, kluczowych z
punktu widzenia wydajności systemu danych z serwerów DB2 lub IDS, udostępniając aplikacjom możliwość
przesyłania zapytań i modyfikacji danych za pomocą języka SQL. Zmiany te są automatycznie synchronizowane
z serwerami DB2 lub IDS, także dla transakcji rejestrowanych w trybie asynchronicznym. Raportowanie i inne
operacje odczytu są wykonywane bezpośrednio na serwerach DB2 lub IDS. solidDB może być również
wykorzystywany w trybie pamięci podręcznej z uprawnieniami tylko do odczytu. Wówczas aktualizacje są
wykonywane bezpośrednio na tradycyjnych bazach danych, a zmienione dane są ponownie ładowane do bazy
solidDB celem obsługi zapytań.
Rysunek 5: IBM solidDB wdrożony jako pamięć podręczna dla serwerów DB2 lub IDS
W przypadku dużych wolumenów, dane można podzielić na kilka instancji solidDB, w sposób przedstawiony na
rysunku 2.
Aplikacje mogą używać produktu solidDB Cache w trybie klient/serwer bądź wykorzystać
dostępne biblioteki programistyczne do wywołania bezpośredniego.
Konfiguracja wielowęzłowa dla bazy solidDB, pracującej w trybie pamięci podręcznej,
może zapewniać wysoki poziom dostępności bądź równoważyć obciążenie systemu
operacjami odczytu.
solidDB może pracować w środowisku opartym na wielu serwerach.
Informacje o danych dotyczących wydajności
Wszystkie informacje dotyczące wydajności, zawarte w niniejszej publikacji, zostały uzyskane w wyniku testów
przeprowadzonych w opisanej powyżej konfiguracji i przedstawione w postaci ilustracji. Wydajności uzyskane w
IBM jest zastrzeżonym znakiem towarowym firmy International Business Machines Corporation.
7
innych konfiguracjach mogą się różnić, a klienci powinni przeprowadzić własne procedury testowe.
Ułatwienia dla użytkowników niepełnosprawnych
Szablon o nazwie US Section 508 Voluntary Product Accessibility Template (VPAT) można zamówić na stronie
internetowej firmy IBM pod adresem:
http://www.ibm.com/able/product_accessibility/index.html
Licencja IPLA, subskrypcje i wsparcie
Licencje IPLA mogą być przenoszone z jednej maszyny na drugą w obrębie przedsiębiorstwa lub poza nim.
Wszystkie procesory, na których działa oprogramowanie można objąć jedną licencją, co pozwala uzyskać
korzystniejszą cenę. Użytkownik otrzyma w takim przypadku pojedyncze potwierdzenie uprawnień (Proof of
Entitlement). Zarządzanie jednostkami wartości (Value Units) w obrębie ograniczeń określonych w licencji
produktu należy do obowiązków użytkownika.
Subskrypcja i wsparcie muszą obejmować tę samą ilość maszyn co licencja na produkt. Subskrypcja i wsparcie
będą dostępne w kraju, w którym zawarta została umowa.
Znaki towarowe
DB2 jest zastrzeżonym znakiem towarowym firmy International Business Machines Corporation w Stanach
Zjednoczonych i/lub innych krajach.
Intel jest zastrzeżonym znakiem towarowym firmy Intel Corporation.
Windows jest zastrzeżonym znakiem towarowym firmy Microsoft® Corporation.
Inne nazwy firm, produktów i usług mogą być znakami towarowymi lub znakami usług innych podmiotów.
Niniejszy komunikat jest dostarczony tylko w celach informacyjnych. Dodatkowe informacje można uzyskać u
odpowiedniego przedstawiciela firmy IBM lub w światowej centrali firmy IBM po wypełnieniu i wysłaniu formularza
kontaktowego na stronie pod adresem: http://www.ibm.com/planetwide/
IBM jest zastrzeżonym znakiem towarowym firmy International Business Machines Corporation.
8

Podobne dokumenty