ODZYSKAĆ ​​- RETRIEVE

ODZYSKAĆ
Paradygmat Tryb rozkazujący , deklaratywny
Rodzina dBASE
Zaprojektowany przez Arden Scott
Deweloper Richard Moore
Po raz pierwszy pojawiły się 1971 ; 50 lat temu ( 1971 )
Język implementacji FORTRAN
Platforma Karta charakterystyki 940
Licencja Prawnie zastrzeżony
Pod wpływem
dBASE , JPLDIS , RECALL, wiele innych

RETRIEVE to system zarządzania bazą danych (DBMS) oferowany w systemach Tymshare od sierpnia 1971. Został napisany we własnym SUPER FORTRANIE Tymshare na karcie SDS 940 . Oferował podstawową funkcjonalność jednoplikowej, nierelacyjnej bazy danych przy użyciu interaktywnego języka programowania . Jest to jeden z najwcześniejszych przykładów oprogramowania jako usługi (SaaS).

RETRIEVE był bardzo wpływowy i zrodził wiele stosunkowo bezpośrednich klonów. Program RECALL firmy Wang Laboratories na minikomputerze Wang 2200 był niemal identyczny jak RETRIEVE, do tego stopnia, że ​​różnice zostały wyszczególnione na jednej stronie. JPL stworzył wersję znaną jako JPLDIS dla UNIVAC 1108 w 1973 roku, która również była bardzo podobna.

Wayne Ratliff , wieloletni wykonawca w JPL, został zainspirowany przez JPLDIS, aby przenieść go do IMSAI 8080, aby zarządzać swoim basenem piłkarskim , a później wypuścił go komercyjnie jako Vulcan dla CP/M w 1979 roku. Ashton-Tate licencjonowany Vulcan i ponownie wydany jako dBASE II w 1980 roku, który zapoczątkował rynek baz danych mikrokomputerów . Większość oryginalnej składni RETRIEVE pozostaje niezmieniona w dBASE i wielu klonach xBASE, które przetrwały do ​​XXI wieku.

Historia

W 1969 Jim Ryan z Tymshare zaprojektował rozszerzoną wersję IBM System/360 H-level (258 kB) FORTRAN , dodając ciągi znaków i inne funkcje, które wykorzystywały ich systemy SDS 940 . Ryan zatrudnił Richarda Moore'a i Francka Brachera, aby opracowali go jako SUPER FORTRAN, który został uruchomiony w ich systemach w 1970 roku. Wkrótce po wydaniu SUPER FORTRAN, Arden Scott poprosił Moore'a o użycie SUPER FORTRAN do opracowania swojej wizji systemu zarządzania bazą danych (DBMS ). Pierwsza wersja była gotowa w ciągu kilku tygodni i od razu cieszyła się dużą popularnością wśród klientów Tymshare.

W latach 70. Tymshare zaczął przenosić swoje systemy z SDS na platformę PDP-10 , ostatecznie uruchamiając TOPS-10 . Doprowadziło to do podjęcia próby zbudowania całkowicie nowego silnika bazy danych dla tej platformy, znanego jako MAGNUM . MAGNUM był kompletnym silnikiem relacyjnej bazy danych i w wielu odniesieniach twierdzi się, że jest to pierwszy taki system oferowany komercyjnie, gdy został uruchomiony w październiku 1975 roku. Chociaż większość klientów Tymshare i użytkowników wewnętrznych przeszło na MAGNUM, do tego czasu RETRIEVE przeniesione na wiele platform i te wersje pozostały bardzo popularne poza firmą.

W 1970 roku Laboratorium Napędów Odrzutowych (JPL) zainstalowało trzy maszyny UNIVAC 1108 . Fred Thompson używał RETRIEVE do zarządzania bazą danych kalkulatorów mechanicznych w JPL i zdecydował się na wprowadzenie systemu we własnym zakresie, gdy pojawiły się 1108. W 1971 współpracował z programistą JPL Jackiem Hatfieldem przy produkcji JPLDIS. Hatfield opuścił JPL w 1974 roku, a projekt został przydzielony innemu programiście JPL, Jebowi Longowi, który dodał szereg funkcji.

W 1973 roku Wang 2200 został zwolniony, a pulpit minikomputer z kasetowy przechowywania. RETRIEVE został przeniesiony na tę platformę pod nazwą RECALL. Raport dla armii amerykańskiej wyszczególnił różnice na jednej stronie i stwierdził, że „różnice między tymi dwoma implementacjami są bardzo niewielkie”.

Pracując w JPL jako wykonawca, Wayne Ratliff wszedł do biurowego basenu piłkarskiego . Nie interesował się grą, ale czuł, że mógłby wygrać pulę, przetwarzając statystyki post-game znalezione w gazetach. W tym celu zaczął szukać systemu bazodanowego i przypadkiem natknął się na dokumentację JPLDIS. Użył tego jako podstawy dla portu do PTDOS na swoim zbudowanym z zestawu mikrokomputerze IMSAI 8080 i nazwał powstały system Vulcan (od Mr. Spocka w Star Trek ). Został później przeniesiony do CP/M, gdy system ten stał się niemal uniwersalny na rynku autobusów S-100 .

W 1980 roku George Tate zobaczył reklamę Vulcana sprzedaną za 49 dolarów. Zaaranżował umowę licencyjną z Ratliff, przemianował ją na dBASE II, aby brzmiała jak druga wersja, i wypuścił ją na rynek za 695 USD. System odniósł sukces, a w 1981 roku IBM zlecił port do jeszcze niewydanego PC DOS . Był to ogromny sukces, jeden z trzech dużych pakietów, wraz z Word Perfect i Lotus 1-2-3, które stanowiły odpowiednik pakietu biurowego na wczesnym rynku DOS.

Opis

Podstawowe operacje

RETRIEVE była nierelacyjną bazą danych, a koncepcja ta została wprowadzona dopiero w 1970 roku. Bazy danych RETRIEVE zawierały pojedynczą tabelę zapisaną w jednym pliku, który zazwyczaj używał skróconej nazwy bazy danych jako nazwy pliku. Struktura tabeli jest definiowana podczas tworzenia bazy danych, umożliwiając wprowadzanie pól znaków, liczb całkowitych lub dowolnych danych liczbowych. Baza danych mogła zawierać maksymalnie 98 pól, maksymalnie 72 znaki na pole, a suma dla jednego wiersza wynosiła 768 znaków lub 256 słów. Nazwy pól musiały zaczynać się od litery i mogły zawierać dodatkowe litery, cyfry, kropkę i znak @, łącznie maksymalnie 31 znaków.

System był interaktywny, korzystając z wiersza poleceń w systemie do interakcji z użytkownikiem. Na przykład, aby uruchomić nową bazę danych, użytkownik musiałby wpisać CREATEw wierszu poleceń, który następnie odpowiedziałby, prosząc użytkownika o wpisanie nazwy bazy danych, a następnie pytając o definicje pól. Pusty wiersz zatrzymuje ten proces i wysyła go do trybu wprowadzania danych, umożliwiając wprowadzanie wierszy. Każdy krok tej operacji można usunąć, podając dane w oryginalnym poleceniu, na przykład po wpisaniu CREATE EMPLOYEESzamiast CREATE, system nie będzie już pytał o nazwę pliku.

Istniały trzy formaty plików baz danych, które można było określić podczas CREATE, normalny format znakowy SYMBOLIC, BINARYktóry zapisywał liczby w ich 24-bitowych wewnętrznych formatach i SCRAMBLEDszyfrował plik hasłem podanym przez użytkownika.

Istniejące bazy danych zostały załadowane za pomocą LOADlub BASE(były równoważne). Dane były zapisywane w miarę ich zmiany, ale było też SAVEpolecenie wypisania danych (lub ich zaznaczeń) do plików płaskich. QUITopuścił system i powrócił do podstawowego systemu operacyjnego.

Pobieranie danych

Po zdefiniowaniu i wypełnieniu bazy danych lub załadowaniu istniejącej, dane można było wyświetlić za pomocą LIST. Bez żadnych parametrów wydrukował wszystkie rekordy w kolejności ich wprowadzania, ich „RECNO”, które było wydrukowane na początku linii. Można również podać listę pól, aby wybrać i zmienić kolejność pól na wydruku, np LIST EMP.NUM,NAME,SALARY. . PRINTOświadczenie pracował niemal identycznie, różnią się tylko tym, że nie wydrukować RECNO na początku linii. FASTbył podobny do PRINT, ale tłumił również nagłówki pól.

Poszczególne rekordy można było wybierać za pomocą „systemu adresowania numerów rekordów”, który był dołączony do LISTlub PRINT. Był to elastyczny format, który pozwalał na określenie obu pojedynczych RECNO oddzielonych przecinkami lub zakresów z dwukropkami, na przykład, 1,7:20,50 PRINTaby wydrukować rekordy 1, wszystko od 7 do 50, a następnie 50. Zawierał również pseudo-rekord $reprezentujący ostatni rekord, więc 100:$ LISTwydrukowano wszystkie rekordy od 100.

Rekordy mogą być również wybierane przez pola spełniające określone kryteria na podstawie ich zawartości, używając FORskładni. Aby wymienić wszystkich pracowników z pensją powyżej 40 000 dolarów, można by PRINT FOR SALARY>40000. Ta sama składnia może być używana do wybierania pojedynczych rekordów na podstawie ich zawartości, a nie na przykład RECNO LIST FOR NAME="Bob Smith". RETRIEVE obsługuje wszystkie podstawowe porównania, =, <, >, <=, >=oraz #dla nierównych , co zostało znalezione w niektórych współczesnych BASIC-ach . Co niezwykłe, RETRIEVE zawierało również angielskie rozwinięcia tradycyjnych porównań, więc można było użyć albo SALARY>40000lub SALARY GREATER THAN 40000. Takie wyrażenia mogą również obejmować podstawową matematykę, w tym +, -, *dla mnożenia, /dzielenia i potęgowania. Można je dalej łączyć z wyrażeniami boolowskimi za pomocą AND, ORi NOT.

Dodatkowo SUM, COUNTi AVERAGEpracował podobny do LISTlub PRINT, w tym tych samych pojęć wyboru rekordów. Jak sama nazwa wskazuje, generują one pojedynczą wartość z powiązanymi wartościami. Na przykład COUNT FOR NAME='Bob Smith'prawdopodobnie zwróci 1, podczas gdy AVERAGE SALARY FOR SALARY>45000może zwrócić 42500.

Oprócz LIST/ PRINT/ FAST, dalsze oświadczenie wyjście REPORT. Działa to w podobny sposób, ale ma kilka opcji ładnego drukowania danych wyjściowych. Można go wywoływać samodzielnie lub z kwalifikatorami jak powyżej, ale kiedy jest używany, przechodzi w tryb interaktywny, który zadaje szereg pytań o to, gdzie wysłać wyjście (gdzie T jest terminalem), czy powinno być pojedyncze czy podwójne, uwzględnij nagłówki i sumy itp.

Modyfikowanie danych

Rekordy można usuwać za pomocą DELETEinstrukcji, używając tych samych selektorów rekordów lub wyrażeń pól, jak powyżej. Nowe rekordy wprowadzono za pomocą APPEND. APPEND FIELDSwszedł w tryb interaktywny, umożliwiający użytkownikowi wpisywanie dodatkowych rekordów pole po polu zamiast wprowadzania wartości rozdzielanych przecinkami wiersz po wierszu. APPEND FROM filenamewczytaj dane z pliku tekstowego rozdzielanego przecinkami do bieżącej bazy danych znajdującej się już w pamięci. MERGEzostał wykorzystany do aktualizacji istniejących zapisów; działał podobnie jak APPENDładowanie do bieżącej bazy danych z innego pliku, ale w tym przypadku zawierał dodatkowy kwalifikator ON. Na przykład, MERGE ON NAME FROM ADDRESSESodczytałby dane z pliku ADDRESSES i poszukał w tym pliku kolumny, w której pierwszym wpisem było „NAZWA”. Następnie przetworzy plik wiersz po wierszu, szukając wpisów w bazie danych o tej NAZWIE, a następnie zaktualizuje pozostałe pola danymi z tego wiersza w polu ADRES.

RETRIEVE obsługuje dwie interaktywne metody aktualizacji istniejących rekordów CHANGEoraz REPLACE. REPLACEdziałał podobnie do współczesnego odpowiednika SQLUPDATE , przyjmując pewnego rodzaju wyrażenie selektora, jedno lub więcej pól i nowe wartości. Na przykład można REPLACE SALARY=SALARY*1.05 WHERE YEARS.EMP>5. Chociaż CHANGEostatecznie zrobił to samo, zrobił to w trybie interaktywnym. Wywołany CHANGEbez nowej wartości, na przykład CHANGE FOR 'Bob Smith' IN NAME. System wydrukował ten wiersz, a następnie zezwolił użytkownikowi na edycję rekordu. Jeśli istnieje więcej niż jedna unikatowa wartość, na przykład , CHANGE FOR YEARS.EMP>5każda wartość była drukowana w osobnym wierszu, a zmiany były wysyłane do wszystkich zgodnych rekordów. MODIFYbył zasadniczo identyczny, CHANGEale nie wydrukował najpierw istniejących wartości.

Sortowanie nie zostało wykonane w czasie pobierania, ale zostało zaimplementowane poprzez modyfikację bazy danych i ponowne zapisanie jej zawartości w kolejności posortowanej. Osiągnięto to za pomocą SORT BY, a następnie do dwudziestu nazw pól. Oryginalne nieposortowane dane są zapisywane w pliku kopii zapasowej.

RESULTS TOModyfikator może być używany z dowolnym sprawozdania modyfikacji danych przekierować wyniki do nowej bazy danych. Na przykład APPEND FROM FEBSALES RESULTS TO CURSALESdołączyłby dane z pliku FEBSALES do aktualnej bazy danych, a następnie zapisałby wyniki do CURSALES bez aktualizacji już otwartej bazy danych. Albo można SORT BY NAME RESULTS TO SORTEMP.

Inne polecenia

Zawierały polecenia narzędziowe, STRUCTUREktóre wyświetlały schemat bazy danych i SIZEzwracały liczbę rekordów.

Programowanie ODBIERZ

Chociaż RETRIEVE był często używany interaktywnie, system zawierał również możliwość zapisywania list poleceń do plików, a następnie ich odtwarzania. Pliki poleceń mogą również zawierać wiele innych instrukcji „pomocniczych”, w tym TYPE 'a string'wyprowadzanie dowolnego ciągu, HUSHpomijanie wiersza polecenia (kropkę), TALKponowne włączanie monitu ECHO ONi ECHO OFFzatrzymywanie odtwarzania na terminalu.

Te pliki poleceń zostały uruchomione za pomocą DO filenameinstrukcji z wewnętrznego wiersza poleceń lub COMMAND filenamez zewnątrz RETRIEVE, w EXECUTIVE. Jeśli skrypt zamierzał na końcu pozostawić użytkownika w RETRIEVE, można by COMMAND Tna końcu umieścić „uruchamianie” Terminala, które określało, co ma się dalej wydarzyć. Skrypty można łączyć ze sobą, COMMANDtworząc bardziej złożone przepływy pracy.

Po uruchomieniu polecenia wewnątrz plików działały tak samo, jak gdyby użytkownik je wpisał. Oznacza to, że jeśli zostanie podana instrukcja, która normalnie wymagałaby dodatkowych danych wejściowych użytkownika, na przykład a CHANGEbez parametrów, zostanie wywołany tryb interaktywny jak normalnie. Dzięki temu pliki poleceń mogły wywoływać dane wejściowe użytkownika, a następnie wykonywać dodatkowe instrukcje. Można np. wykorzystać REPLACE ALL WEEK.SAL=SALARY/52do wyłapania ostatnich zmian w wynagrodzeniu, zadzwonić, CHANGE HOURSaby system przedstawił rekord każdego pracownika i poprosić o jego tygodniowe godziny, następnie REPLACE ALL PAY=HOURS*WEEK.SALobliczyć tygodniową pensję dla wszystkich użytkowników, a na koniec REPORTwysłać to wszystko do drukarki .

Porównanie z dBASE

Chociaż dzieli je prawie dekada i przeniósł się na cztery platformy, dBASE w DOS pozostał bardzo podobny do RETRIEVE. Ratliff stwierdził, że nastąpił „rodzaj przejścia od Retrieve do JPLDIS do mojego programu, który nazwałem Vulcan”. John Walker , lepiej znany z programu AutoCAD , również używał JPLDIS i stwierdził kategorycznie, że „DBase II, system bazy danych Ashton-Tate, był kopią, reimplementacją pakietu opracowanego w Jet Propulsion Laboratory o nazwie JPLDIS”.

LOAD/ BASEstał się USEi kropki w nazwach pól zostały zastąpione dwukropkami, ale większość innych poleceń i funkcji pozostała niezmieniona, poza obsługą różnic w podstawowych platformach, takich jak formaty liczbowe. Na przykład oryginalny podręcznik użytkownika dBASE używa tego przykładu:

use people
list

Który jest identyczny z instrukcjami w POBIERZ:

LOAD people
LIST

Ogólne działanie instrukcji jest w dużej mierze identyczne w obu systemach. Podstawowe różnice w dBASE są związane z programowalnością; dBASE dodał zmienne, mógł LISTtworzyć kolumny złożone z formuł, takich jak LIST SALARY*1.05, i dodał znacznie szerszą gamę funkcji do manipulowania danymi, w tym funkcje do zwracania długości ciągu lub typu danych danego pola.

Uwagi

Bibliografia

Cytaty

Bibliografia