konto usunięte
Temat: Koszt realizacji bazy danych
Paweł Grzegorz Kwiatkowski:
Jak chce wyceniać, to ma np. metodę punktów funkcyjnych.
Tylko, że wycena wg. tej metody może się różnić o 2 rzędy wielkości albo i lepiej dla różnych firm.
konto usunięte
Paweł Grzegorz Kwiatkowski:
Jak chce wyceniać, to ma np. metodę punktów funkcyjnych.
konto usunięte
Aleksander
Olszewski
Kierownik Projektów
IT, PRINCE2
Practitioner
Paweł Grzegorz Kwiatkowski:
...
Jak chce wyceniać, to ma np. metodę punktów funkcyjnych.
Aleksander
Olszewski
Kierownik Projektów
IT, PRINCE2
Practitioner
Michał Z.:Dlaczego mam przeczucie, że w takim podejściu nie powstanie a ni jedna fizyczna relacja w bazie?
Dziś, jak ktoś zaczyna od zera, robi model w jakimś ORMie.
Wygenerowanie schematu z takiego modelu nic nie kosztuje, a zwykleczy to komputer sam zrobi, czy jednak człowiek usiądzie i poświęci kilka godzin czy dni na rzeźbienie tego? No to chyba nie jest za darmo.
model i tak trzeba zrobić. Jeżeli MySQL, to pewnie będzie PHP,w tym ujęciu nie będzie to model, a nadal skrypt generujący, tyle że w obiektowej otoczce.
żeby było taniej. Jeżeli tak, to pewnie będzie Symfony. Pierwszy link z google'a: http://www.symfony-project.org/jobeet/1_2/Propel/pl/03no właśnie, czyli bez relacji i normalizacji. Czyli za rok magika od baz, bo baza nie wydoli?
Osobną sprawą jest optymalizacja tego wszystkiego. Jeżeli
jednak projekt zaczyna się od zera, albo czegoś podobnego... Założyłbym pełen zestaw oczywistych indeksów - obie stronynie wiele jest indeksów oczywistych. Trzeba wiedzieć do czego baza służy i jak tabele będą się łączyć w zapytaniach i jakich.
więzów integralności + pola, po których jest wyszukiwanie. Dodałbym też monitoring, żeby można było śledzić zmiany, wyłapać problemy. Cacti + Nagios - i można śledzić co się dzieje.
konto usunięte
Aleksander Olszewski:
Michał Z.:nie wiele jest indeksów oczywistych. Trzeba wiedzieć do czego baza służy i jak tabele będą się łączyć w zapytaniach i jakich.
Dziś, jak ktoś zaczyna od zera, robi model w jakimś ORMie. jednak projekt zaczyna się od zera, albo czegoś podobnego... Założyłbym pełen zestaw oczywistych indeksów - obie strony
konto usunięte
Aleksander Olszewski:
Michał Z.:Dlaczego mam przeczucie, że w takim podejściu nie powstanie a ni jedna fizyczna relacja w bazie?
Dziś, jak ktoś zaczyna od zera, robi model w jakimś ORMie.
Wygenerowanie schematu z takiego modelu nic nie kosztuje, a zwykleczy to komputer sam zrobi, czy jednak człowiek usiądzie i poświęci kilka godzin czy dni na rzeźbienie tego? No to chyba nie jest za darmo.
Aleksander
Olszewski
Kierownik Projektów
IT, PRINCE2
Practitioner
Michał Z.:W SQL skrypt generujący może wyglądać tak:
...
Nie mam pojęcia. Często zaczynam modelowanie w ormie i jakoś nie ma problemu z eksportem tego do skryptu sql... Taki skrypt to przecież też nie są relacje w bazie.
CREATE TABLE t2 (
id INT UNSIGNED,
parent_id INT UNSIGNED,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON UPDATE CASCADE
ON DELETE RESTRICT
) ENGINE=INNODB;
Wygenerowanie schematu z takiego modelu nic nie kosztuje, a zwykleczy to komputer sam zrobi, czy jednak człowiek usiądzie i poświęci kilka godzin czy dni na rzeźbienie tego? No to chyba nie jest za darmo.
Ojej... Kolejny flame? Ja po prostu uważam, że projektowanie bazy w tym przypadku jest kompletnie bez sensu. Mając strategię biznesową firmy, można przygotować analizę konkretnego projektu. Potem zrobić projekt systemu. Oprogramować - w wybranej technologii. W ramach oprogramowywania oczekuję, że powstanie model. Jego wyeksportowanie do czegoś, co pozwoli bazie na stworzenie odpowiednich struktur jest banalne. Robienie najpierw bazy jest jak zabieranie się za programowanie od d... strony.
Zamiast zakładać, że to jest jakiś kolos - proszę założyć, że to prosty system - góra 100 tabel, wszystkiego, ze słownikowymi i co tam jeszcze może być potrzebne. Jeżeli ktoś chciałby system, którego projekt bazy danych kosztowałby 10k pln - nie pytałby na grupie, w ten sposób. Budżet całego projektu spokojnie pozwoliłby na zatrudnienie kogoś kumatego, kto udzieliłby odpowiedzi na takie pytanie. Ten ktoś wziąłby za to pieniądze i odpowiedzialność.
Z innych rzeczy - ORM potrafi tak wyeksportować model, żeby więzy integralności były założone. Które indeksy uważam za oczywiste też napisałem. To jest pierwsze przybliżenie, jeżeli okaże się, że któryś indeks nie jest potrzebny, wyjdzie w praniu i będzie go można skasować. Uważam, że takie coś spokojnie pochodzi przez 2-3 miesiące, a w tym czasie zostaną zebrane dane o pracy systemu. Zwykle też można się spodziewać, że klient będzie miał jakieś inne uwagi - np. dotyczące interfejsu użytkownika. Pewnie i tak trzeba się spotkać, omówić wdrożenie, dalszy rozwój aplikacji. Przejrzenie statystyk z bazy danych uważam za dobrą podstawę do rozmów. Dodatkowo można posprzątać to co nie jest potrzebne.
EOT.
konto usunięte
Aleksander Olszewski:
Sztuka z bazą polega na rozpoznaniu i indeksów na poziomie projektu bazy. No ale jak zwykle wolimy kupować tanie rzeczy, najlepiej za darmo. Jak SI jest za darmo, to jego utrzymanie kosztuje krocie. Nie żyjemy w komunizmie i za darmo nic nie ma.
Aleksander
Olszewski
Kierownik Projektów
IT, PRINCE2
Practitioner
Szymon G.:
Aleksander Olszewski:
Sztuka z bazą polega na rozpoznaniu i indeksów na poziomie projektu bazy. No ale jak zwykle wolimy kupować tanie rzeczy, najlepiej za darmo. Jak SI jest za darmo, to jego utrzymanie kosztuje krocie. Nie żyjemy w komunizmie i za darmo nic nie ma.
No to życzę pomyślnych łowów. Ech. Wymyślenie dobrych indeksów na podstawie projektu bazy to rzeczywiście sztuka.
Ja się widocznie nie znam, ale robię przeważnie indeksy, które są potrzebne, a nie te wynikające z projektu bazy. Projekt sobie może być jaki chcesz, a potem się okaże, że baza jest używana tak a nie inaczej i to jest niezależne od projektu. Indeksy nie są po to żeby projekt był ładny. Indeksy są tylko do przyspieszenia zapytań (oczywiście tylko niektórych i tylko czasami).
Eugeniusz Fizdejko Freelancer
Aleksander Olszewski:
Aleksander
Olszewski
Kierownik Projektów
IT, PRINCE2
Practitioner
Eugeniusz Fizdejko:
...
Moim skromnym zdaniem, programista powinien posiadać chociaż minimum wiedzy na temat branży dla której realizuje projekt, tj. jeśli koduje program księgowy, powinien orientować się (lub ktoś z zespołu) w księgowości przynajmniej na podstawowym poziomie.
konto usunięte
Aleksander Olszewski:
Po normalizacji dostaniemy relacje oraz klucze główne/klucze obce, które są już indeksowane i uwaga: nie trzeba na nie zakładać indeksów, bo będą się dublować. To chyba proste? Dodatkowo indeksujemy zapewne nr. telefonu, adres e-mail, PESEL (o ile nie jest kluczem głównym), NIP (i ile nie jest kluczem głównym i firma jest w osobnej encji), Nazwisko i pewnie miasto i ulicę ze wspólnym indeksiem lub osobnym, zależy z czym mamy do czynienia. Reszta z punktu widzenia tych dwóch zdań jest wtórne. Jaki z tym problem?
Przemysław
Kantyka
Oracle Certified
Professional, Oracle
Database SQL
Certif...
Aleksander Olszewski:
[...]
Potrzebujemy NIP, PESEL, Imię, Nazwisko/Nazwa, Adres zamieszkania/Siedziby, być może numer telefonu, ewentualnie e-mail oraz wszystko to co się znajdzie w fakturze. Po normalizacji dostaniemy relacje oraz klucze główne/klucze obce, które są już indeksowane i uwaga: nie trzeba na nie zakładać indeksów, bo będą się dublować.
konto usunięte
Przemysław Kantyka:
OFFTOP:
Aleksander Olszewski:
[...]
Potrzebujemy NIP, PESEL, Imię, Nazwisko/Nazwa, Adres zamieszkania/Siedziby, być może numer telefonu, ewentualnie e-mail oraz wszystko to co się znajdzie w fakturze. Po normalizacji dostaniemy relacje oraz klucze główne/klucze obce, które są już indeksowane i uwaga: nie trzeba na nie zakładać indeksów, bo będą się dublować.
Warto zaznaczyć że to jest prawda o ile fiksujemy się na MySQL'u bo np. w Oracle już niekoniecznie. Ponieważ Pan opisuje wysoki poziom abstrakcji warto wspomnieć, że Pana uwaga dotyczy tylko konkretnej technologii.
Aleksander
Olszewski
Kierownik Projektów
IT, PRINCE2
Practitioner
Przemysław Kantyka:
OFFTOP:
Aleksander Olszewski:
[...]
Potrzebujemy NIP, PESEL, Imię, Nazwisko/Nazwa, Adres zamieszkania/Siedziby, być może numer telefonu, ewentualnie e-mail oraz wszystko to co się znajdzie w fakturze. Po normalizacji dostaniemy relacje oraz klucze główne/klucze obce, które są już indeksowane i uwaga: nie trzeba na nie zakładać indeksów, bo będą się dublować.
Warto zaznaczyć że to jest prawda o ile fiksujemy się na MySQL'u bo np. w Oracle już niekoniecznie. Ponieważ Pan opisuje wysoki poziom abstrakcji warto wspomnieć, że Pana uwaga dotyczy tylko konkretnej technologii.
Aleksander
Olszewski
Kierownik Projektów
IT, PRINCE2
Practitioner
Szymon G.:
...
Otóż to... zresztą indeksy i tak są "implementation detail" i, jeśli dobrze pamietam, nawet nie są uwzględnione w standardzie SQL.
W opisie na tak wysokim poziomie abstrakcji nie powinno być słowa o indeksach. Indeksy dotyczą implementacji li tylko.
Przemysław
Kantyka
Oracle Certified
Professional, Oracle
Database SQL
Certif...
Aleksander Olszewski:
Przemysław Kantyka:
OFFTOP:
Aleksander Olszewski:
[...]
Potrzebujemy NIP, PESEL, Imię, Nazwisko/Nazwa, Adres zamieszkania/Siedziby, być może numer telefonu, ewentualnie e-mail oraz wszystko to co się znajdzie w fakturze. Po normalizacji dostaniemy relacje oraz klucze główne/klucze obce, które są już indeksowane i uwaga: nie trzeba na nie zakładać indeksów, bo będą się dublować.
Warto zaznaczyć że to jest prawda o ile fiksujemy się na MySQL'u bo np. w Oracle już niekoniecznie. Ponieważ Pan opisuje wysoki poziom abstrakcji warto wspomnieć, że Pana uwaga dotyczy tylko konkretnej technologii.
Mam na myśli wizualne modelowanie w narzędziu CASE. Tak więc wszystko jedno do jakiej technologii to wszystko będzie później przenoszone. Jak CASE do MySQL nie obsłuży np. ORACLE, to ORACLE ma CASE z reverse engineering. Najgłówniejsze aby model był "ogarnięty".
Aleksander
Olszewski
Kierownik Projektów
IT, PRINCE2
Practitioner
Przemysław Kantyka:
...
Chyba się nie zrozumieliśmy - mnie chodzi o to, że w Oracle klucze obce nie są domyślnie indeksowane, a Pan napisał, że nie trzeba ich zakładać. W MySQL to prawda, ale w Oracle (jeśli narzędzie tego nie dopilnuje) stworzy Pan w ten sposób nieoptymalny system. Dodałem zatem, że Pana uwaga tyczy się już konkretnej implementacji, lub (to dodaję teraz) uwzględnia narzędzie które samo tego pilnuje.
Z tym "wszystko jedno do jakiej technologii" - takie stwierdzenie zawsze zapala u mnie w mózgu żółte światełko. Na pewnym poziomie abstrakcji to oczywiście prawda, ale zazwyczaj diabeł tkwi w szczegółach - np. wspomniane indeksowanie kluczy.
konto usunięte
Aleksander Olszewski:
Przemysław Kantyka:
...
Chyba się nie zrozumieliśmy - mnie chodzi o to, że w Oracle klucze obce nie są domyślnie indeksowane, a Pan napisał, że nie trzeba ich zakładać. W MySQL to prawda, ale w Oracle (jeśli narzędzie tego nie dopilnuje) stworzy Pan w ten sposób nieoptymalny system. Dodałem zatem, że Pana uwaga tyczy się już konkretnej implementacji, lub (to dodaję teraz) uwzględnia narzędzie które samo tego pilnuje.
Pierwotnie temat dotyczył MySQL, stąd być może dosyć mocno skupiłem się na konkretnej fizycznej implementacji. Niestety pomimo tego, że silniki bazodanowe niby implementują wystandaryzowane wytyczne języka, jednak ta implementacja wychodzi różnie: np. brak autoinkrementacji w PostgreSQL, czy prezent od ORACLE w postaci obsługi struktur drzewiastych. Przykłady można mnożyć.
Dlatego istotną kwestią jest dwukrokowa budowa modelu: model logiczny, a dopiero potem model fizyczny. Uodporni to model na zmianę technologii, a przejście na inną technologie odbywa się mniej boleśnie i mniejszym kosztem.
Z tym "wszystko jedno do jakiej technologii" - takie stwierdzenie zawsze zapala u mnie w mózgu żółte światełko. Na pewnym poziomie abstrakcji to oczywiście prawda, ale zazwyczaj diabeł tkwi w szczegółach - np. wspomniane indeksowanie kluczy.
Cieszę się, że żółte, a nie czerwone :) W projektowaniu obowiązuje reguła: od ogółu do szczegółu. Nie można zaniedbywać a ni jednego a ni drugiego.
Aleksander
Olszewski
Kierownik Projektów
IT, PRINCE2
Practitioner
Szymon G.:
...
Znaczy się, że nie ma autoinkrementacji w Postgresie??? Jak nie ma jak jest? (hint: typ serial)
Struktury drzewiaste w Postgresie są obsługiwane też.
Dlatego istotną kwestią jest dwukrokowa budowa modelu: model logiczny, a dopiero potem model fizyczny. Uodporni to model na zmianę technologii, a przejście na inną technologie odbywa się mniej boleśnie i mniejszym kosztem.
I tu się zgadzam :)
Z tym "wszystko jedno do jakiej technologii" - takie stwierdzenie zawsze zapala u mnie w mózgu żółte światełko. Na pewnym poziomie abstrakcji to oczywiście prawda, ale zazwyczaj diabeł tkwi w szczegółach - np. wspomniane indeksowanie kluczy.
Cieszę się, że żółte, a nie czerwone :) W projektowaniu obowiązuje reguła: od ogółu do szczegółu. Nie można zaniedbywać a ni jednego a ni drugiego.
a to w praktyce różnie wygląda, niestety :)
Następna dyskusja: