Jaka nazwa dla programu do optymalizacji baz danych?

0

Mam taki pomysł, żeby kawałek oprogramowania, które robię przy okazji doktoratu wypuścić, by inni mogli z tego korzystać.

Program będzie działał następująco:

  1. Podłącza się go przez JDBC do istniejącego systemu baz danych i wskazuje bazy danych do optymalizacji.
  2. Program importuje model danych oraz statystyki takie jak liczba rekordów, zakresy wartości w kolumnach, histogramy itp.
  3. Wskazuje się plik zawierający zapytania, albo wpisuje się zapytania SQL ręcznie.
  4. Wciska się jeden przycisk, czeka trochę czasu i po chwili program wyrzuca listę wskazówek o tym, jakie indeksy i perspektywy trzeba założyć, jakie wyrzucić, które tabele warto popartycjonować lub sklastrować wg jakiegoś indeksu, które zapytania są złe (np. select * from tabela_na_milion_rekordów;).
  5. Opcjonalnie można zlecić programowi zastosowanie tych wskazówek - wtedy np. sam założy indeksy, poklastruje/popartycjonuje tabele itp.

Program będzie miał też tryb pracy jako demon i wtedy bezobsługowo będzie nadzorował pracę systemu i na bieżąco optymalizował bazy. Musi mieć oczywiście dostęp do logów, żeby wiedzieć, jakie zapytania idą.

Program ma być docelowo dostępny nie tylko dla odbiorców w Polsce.

Pytanie 1: jaką marketingowo chwytliwą nazwę temu czemuś nadać?
Pytanie 2: czy w ogóle pomysł jest dobry (od strony naukowej jest dobry i ciekawy, ale może to wcale nie oznacza, że ludzie bedą tego chcieli używać)?
Pytanie 3: jeśli tak, to jak zarobić na tym tyle, by przynajmniej by po doktoracie opłacało mi się to rozwijać?
Czy iść w open-source + komercyjny support, wziąć jakąś firmę do sprzedaży, czy jak? Przyznam, że robota jest 100 razy ciekawsza niż robienie w firmie kolejnego systemu 'enterprise' na potrzeby molocha jak powiedzmy Play czy Empik...

// Swoją drogą nie wiem, czy ten temat to bardziej do działu nietuzinkowe tematy, bazy danych, czy offtop; Przenieście, jeśli źle trafiłem ;)

0

Pytanie 1: Przejrzyj słowniki, encyklopedie, atlas roślin i zwierząt
Pytanie 2: Moim zdaniem pomysł jest co najmniej genialny
Pytanie 3: Osobiście wolałbym, żeby było open-source/freeware, bo wtedy więcej ludzi z tego skorzysta.

Życzę szczęścia w dalszej pracy. Z takimi pomysłami daleko zajdziesz

0

Akurat moim zdaniem nazwa nie jest tak istotna. W końcu akurat wiele najpopularniejszych rzeczy ma nazwy proste, nieskomplikowane i... mało znaczące. Bo co znaczy taki "Word", taka "Java" czy coś w tym stylu? Akurat zawsze niezmiernie zastanawiało mnie dlaczego wiele osób tworzące bzdurne programiki w rodzaju optymalizatorów z Allegro naśladuje paramarketingowe Microsoftowe slogany tworząc Soper Turbo XP Optimizer 2007 Pro. A nawet wspomniany MS teraz wraca do nazw bardziej zbliżonych do obecnych kodowych: Silverlight, Surface, Omnigo (a zmiany Monada na PowerShella im nie wybaczę). Tak samo SUSE Linux Enterprise Desktop czy Red Hat Enterprise Linux są skracane do SLED/RHEL, bo są za długie - takie marketingowe tasiemce są złe.

Ja nazwy biorę z mitologii (aczkolwiek u mnie wszystko zostaje z nazwami kodowymi) i na przykład planowany program ma nazywać się Zeuxo, a na liście wykorzystanych są takie jak Urania, Thetys, Freya, Aisle czy Izis.

Pomysł jest dobry, dobry i ciekawy, ale używanie tego będzie zależało od paru czynników - czy i jak będzie współpracował z serwisami opartymi o jedną z popularniejszych baz - MySQL, ile będzie kosztował i kto się o nim dowie. To może być piękne narzędzie do poprawiania niezbyt umiejących SQL programistów PHP, takich jak na przykład ja ;-)

Pytanie trzecie jest najgorsze. Ja też chciałbym ujrzeć ten projekt jako wolne oprogramowanie*, ale nie wiem jak to będzie z tym zarabianiem. Może wersja community oraz enterprise, z większą ilością funkcji oraz wsparciem? Musisz rozważyć wszystkie za i przeciw samemu, zresztą spodziewam się, że jest jeszcze czas.

  • <font size="1">i znów mam w tym miejscu niesamowity uśmiech na twarzy myśląc o szybkości działania Javy oraz słowie "wolne oprogramowanie" w odniesieniu do niej - choć ta mityczna powolność Javy to chyba już tylko stereotyp, którego się nie mogę wyzbyć :-)</span>
0

Opcję z wolnym oprogramowaniem rozważam, ale nie nastąpi to raczej wcześniej niż za rok.
Mam obecnie prototyp, trochę rzeczy działa, ale wymaga jeszcze sporo pracy. Jest w nim kilka moich własnych pomysłów, które chcę opublikować i wolałbym, żeby ktoś nie zrobił tego przede mną, bo z tego ma być rozprawa doktorska ;). Jak już pójdą papiery na konferencje, nie mam nic przeciwko temu by to otworzyć. Produktu odpłatnego raczej indywidualni klienci i tak nie kupią, więc bez obaw.

Myslałem bardziej o firmach hostingowych np. PHP + MySQL, ale znowu, nie jestem wcale przekonany, czy to ma szanse chwycić. No bo przecież zawsze można postawić 5 razy szybszy serwer, ewentualnie posadzić człowieka, który to i tamto poprawi, i jakoś do następnego razu chodzi. A jeśli te firmy mają darmowego MySQLa i PHP, to może wcale nie będą chciały wydawać kasy na dodatki. Z kolei firmy przy kasie mogą postawić sobie Oracle lub DB/2 i tam już tego typu bajery chodzą (wprawdzie nie tak samo jak w moim programie, ale tu przewaga jakościowa może być już dużo mniejsza niż w przypadku MySQLa czy Postgresa).

A z nazwą, to może właśnie dobry pomysł, żeby poszukać po np. nazwach roślin, zwierząt, grzybów itp. Dzieki, nie pomyślałem o tym. [browar]

0

Witam, ja bym dal po prostu rabitt, albo bunny, wiadomo dlaczego ;)

znaczy rabbit, sorki za blad

0

No, nazwa spoko, ale fajnie jakby się dało ją jakoś sensownie jako akronim rozwinąć.
Np. tak jak jest WINE: Wine Is Not an Emulator,
albo GIMP: Gnu Image Manipulation Program ;)

0

RABBIT - Robi Absolutnie Boskie Bazy I Tyle ;)

0
AdamPL napisał(a)

RABBIT - Robi Absolutnie Boskie Bazy I Tyle ;)

GENIALNE !!!

0

[browar] No, fantastyczne!
A coś po angielsku?

0

Run A Big (data)Base Incredibly Tasteful ;]

wiem, suchar.. ale akronim jest ;]

0

Nie jestem w stanie wskazać żadnej nazwy już teraz, ale mam pewną wskazówkę co do niej: nie powinno to byś jakieś zbyt popularne słowo - niezależnie czy soft będzie komercyjny czy nie, to unikatowa nazwę łatwiej po prostu wygooglać, nie tylko żeby znaleźć stronę z inf. o sofcie, ale także np. łatwo odszukać w necie watki na forach gdzie użytkownicy będą się wymieniać swoimi doświadczeniami z programem...

To takie moje luźne przemyślenia...

0

co do pytania 3.:
jezeli soft bedzie zamkniety, to bedzie malo popularny - prznajmniej na poacztku. jedyne osoby, ktore wykupia licencje, to firmy.
jezeli kod bedzie otwarty, to szybciej ten soft stanie sie popularny. zyska wieksze grono uzytkownikow, wiecej bedzie mial w bugtrackerze, czyli bedziesz mogl zapewnic szybka poprawe kodu, a firmy, ktore beda chcialy wykorzystac oprogramowanie do swoich celow komerycjnych beda ci placic za wsparcie, czy za mozliwosc zaproponowania zmian w sofcie, np dodanie nowej funkcji etc..

0

Albo zrobić otwarte oprogramowanie, płatne dla celów komercyjnych. Jak MySQL.

0

Odnosnie pytania 2: Pomysl super, tylko balbym sie troche tego trybu demon. Osobiscie nie pzwolilbym zadnej aplikacji grzebac sobie w strukturze bazy bez mojej wiedzy.

0
Krolik napisał(a)

Mam taki pomysł, żeby kawałek oprogramowania, które robię przy okazji doktoratu wypuścić, by inni mogli z tego korzystać.

Program będzie działał następująco:

  1. Podłącza się go przez JDBC do istniejącego systemu baz danych i wskazuje bazy danych do optymalizacji.
  2. Program importuje model danych oraz statystyki takie jak liczba rekordów, zakresy wartości w kolumnach, histogramy itp.
  3. Wskazuje się plik zawierający zapytania, albo wpisuje się zapytania SQL ręcznie.
  4. Wciska się jeden przycisk, czeka trochę czasu i po chwili program wyrzuca listę wskazówek o tym, jakie indeksy i perspektywy trzeba założyć, jakie wyrzucić, które tabele warto popartycjonować lub sklastrować wg jakiegoś indeksu, które zapytania są złe (np. select * from tabela_na_milion_rekordów;).
  5. Opcjonalnie można zlecić programowi zastosowanie tych wskazówek - wtedy np. sam założy indeksy, poklastruje/popartycjonuje tabele itp.

Program będzie miał też tryb pracy jako demon i wtedy bezobsługowo będzie nadzorował pracę systemu i na bieżąco optymalizował bazy. Musi mieć oczywiście dostęp do logów, żeby wiedzieć, jakie zapytania idą.

Program ma być docelowo dostępny nie tylko dla odbiorców w Polsce.

Pytanie 1: jaką marketingowo chwytliwą nazwę temu czemuś nadać?
Pytanie 2: czy w ogóle pomysł jest dobry (od strony naukowej jest dobry i ciekawy, ale może to wcale nie oznacza, że ludzie bedą tego chcieli używać)?
Pytanie 3: jeśli tak, to jak zarobić na tym tyle, by przynajmniej by po doktoracie opłacało mi się to rozwijać?
Czy iść w open-source + komercyjny support, wziąć jakąś firmę do sprzedaży, czy jak? Przyznam, że robota jest 100 razy ciekawsza niż robienie w firmie kolejnego systemu 'enterprise' na potrzeby molocha jak powiedzmy Play czy Empik...

// Swoją drogą nie wiem, czy ten temat to bardziej do działu nietuzinkowe tematy, bazy danych, czy offtop; Przenieście, jeśli źle trafiłem ;)

jak dla mnie to super ambitne zadanie, bowiem:

  1. jeśli ma obsługiwać dowolną bazę, to musi uwzględniać technologię danego RDBMS
  2. na javie się nie znam za bardzo, stąd pytanie, czy jdbc korzysta z natywnych providerów czy łączy się przez odbc? jeśli to drugie, to może to w jakimś stopniu impaktować wydajność
  3. jeśli 1) => optymalizacja różnego RDBMsa będzie chyba wyglądać inaczej. SQL Server się w miarę sam "optymalizuje", ale ma najprzeróżniejsze liczniki wydajności które można wykorzystać do analizy. Oracle to już całkiem inna bajka i aby optymalizować ten system trzeba naprawdę wiedzieć co się robi. Co system to inne procedury do zarządzania, widoki systemowe, statystyki.
  4. jeśli ma działać jako usługa i na bieżąco optymalizowac, to jak ropoznać kiedy jest odpowiedni moment na optymalizację, żeby np. reindeksacja na dużej tabeli nie zarżnęła systemu i nie wstrzymała systemu.
  5. co jeśli db chodzi w klastrze?
  6. jakie będą metryki i jak będą przeprowadzane porównania do baseline'u, żeby wiedzieć czy się coś polepszyło?
  7. dostęp do zapytań do DB - to też może obciążyć system. NP. SQL profiler spowalnia pracę SQL Servera.
  8. Jak przebijesz funkcjonalność oferowaną przez niektóre istniejące RDBMs - management plany, procedury, liczniki + wykwalifikowany DBA? Czy to ma być raczej produkt przeznaczony dla mniejszych rozwiązań?
  9. Czy program będzie analizował np. normalizację bazy?

w każdym razie, szacunek, bo temat jest "challenging" :)

0

jak dla mnie to super ambitne zadanie, bowiem:

  1. jeśli ma obsługiwać dowolną bazę, to musi uwzględniać technologię danego RDBMS
  2. na javie się nie znam za bardzo, stąd pytanie, czy jdbc korzysta z natywnych providerów czy łączy się przez odbc? jeśli to drugie, to może to w jakimś stopniu impaktować wydajność
  3. jeśli 1) => optymalizacja różnego RDBMsa będzie chyba wyglądać inaczej. SQL Server się w miarę sam "optymalizuje", ale ma najprzeróżniejsze liczniki wydajności które można wykorzystać do analizy. Oracle to już całkiem inna bajka i aby optymalizować ten system trzeba naprawdę wiedzieć co się robi. Co system to inne procedury do zarządzania, widoki systemowe, statystyki.
  4. jeśli ma działać jako usługa i na bieżąco optymalizowac, to jak ropoznać kiedy jest odpowiedni moment na optymalizację, żeby np. reindeksacja na dużej tabeli nie zarżnęła systemu i nie wstrzymała systemu.
  5. co jeśli db chodzi w klastrze?
  6. jakie będą metryki i jak będą przeprowadzane porównania do baseline'u, żeby wiedzieć czy się coś polepszyło?
  7. dostęp do zapytań do DB - to też może obciążyć system. NP. SQL profiler spowalnia pracę SQL Servera.
  8. Jak przebijesz funkcjonalność oferowaną przez niektóre istniejące RDBMs - management plany, procedury, liczniki + wykwalifikowany DBA? Czy to ma być raczej produkt przeznaczony dla mniejszych rozwiązań?
  9. Czy program będzie analizował np. normalizację bazy?

Ad 1. Musi. Algorytm jest jeden, natomiast zestaw operatorów przekształcających fizyczne plany zapytań, jak również pewne wzory służące do szacowania jakości planów są parametryzowane. Podobnie zestaw możliwych indeksów oraz ich charakterystyki.
Ad 2. Istnieją natywne, szybkie sterowniki JDBC. Zresztą JDBC jest potrzebne tylko do odczytania schematu bazy oraz ewentualnego zakładania lub kasowania indeksów. Nie ma więc problemu.
Ad 3. Początkowo skupiam się jedynie na indeksach. Do doktoratu mi to wystarczy. W praktyce samym doborem odpowiednich indeksów można czasem coś przyspieszyć kilka tysięcy razy. Wszystkie bazy obsługują to podobnie. Idea jest zawsze taka sama, tyle że czasem masz dostępny inny zestaw typów indeksów. Czasem są np. różne ograniczenia na typy i liczbę kolumn itp. Ale to nie jest poważny problem tutaj.
Ad 4. To jest temat na obszerny artykuł na dobrą konferencję za co najmniej 10 pkt wg punktacji (byłego) KBN. :) Rozwiązanie leży gdzieś na styku teorii sygnałów, teorii sterowania, metod probabilistycznych i technik optymalizacji globalnej.
Ad 5. O tym będzie w rozdziale "Future work"
Ad 6. Każdy kosztowy optymalizator zapytań pozwala to szacować. A co do metryk - w książce "Klasyka informatyki - Implementacja systemów baz danych" na kilkuset stronach trochę (!) o tym napisano. W każdym razie szacowanie będzie a priori, heurystyczne, bez materializacji indeksów (na tzw indeksach wirtualnych).
Ad 7. Może. Kwestia implementacji. Tu będzie pole do popisu dla twórców pluginów. Podejrzewam, że da się to zrobić na co najmniej 2 sposoby: a) z logów, b) przez wrapper JDBC (ODBC) przechwytujacy zapytania.
Ad 8. Nie mam zamiaru przebijać funkcjonalnością. Musiałbym dorobić do tego programu cały porządny RDBMS. :/ Z drugiej strony obecnie żaden RDBMS open-source nie ma nawet cienia tego typu rozwiązań. Więc mój program ma być raczej dodatkiem do open-source'ów, a nie Oracle, DB/2. Oczywiście pod pewnymi względami zastosowane rozwiązania mają być lepsze niż te w Oracle, DB/2. Pod pewnymi będą zapewne gorsze.
Ad 9. Nie.

Temat jest ambitny, ale wykonalny. Jest sporo literatury na ten temat (głównie z lat 2004-2007). Wielu rzeczy nie trzeba więc wymyslać od zera i pisanie tego idzie dość szybko. Jak będę miał już coś użytecznego, to udostępnię.

Odnosnie pytania 2: Pomysl super, tylko balbym sie troche tego trybu demon. Osobiscie nie pzwolilbym zadnej aplikacji grzebac sobie w strukturze bazy bez mojej wiedzy.

A jakby program przed dokonaniem zmian wysłał Ci maila albo SMSa? A Ty sprawdziłbyś i klepnął OK albo Anuluj? Poza tym on będzie miał dostęp na początek jedynie do poleceń CREATE/DROP INDEX oraz CLUSTER.

0
Krolik napisał(a)

A jakby program przed dokonaniem zmian wysłał Ci maila albo SMSa? A Ty sprawdziłbyś i klepnął OK albo Anuluj? Poza tym on będzie miał dostęp na początek jedynie do poleceń CREATE/DROP INDEX oraz CLUSTER.

No, to by bylo niezle. Tak na marginesie chetnie zapoznalbym sie z tym nazedziem, gdy juz powstanie i sprawdzil jak dziala (o ile je udostepnisz w jakiejs formie). Mamy pare baz w firmie, takze bylo by poletko doswiadczalen do popisu.

0

Odkopię ten temat, bom niezwykle ciekawy, czy stworzyłeś w końcu ten soft czy nie :]

0

Jabitt - JDBC Analizer (for) Better Indexes Tool
Jabbit - JDBC Analizer Battling (for) Better Indexes Tool
od Java + Rabbit - nazwa chwytliwa i nawet akronim jest ;d
przeczytalem caly temat z rana i dopiero ostatni post uswiadomil mi ze to jest stare jak swiat, no ale moza nadal aktualne i nadal szukasz nazwy ;d
pozdro

0

Soft stworzyłem i działa. Ale nie jest to jeszcze wersja nadająca się do pokazania światu.
Obecnie muszę skończyć pisać rozprawę, później może się zajmę promowaniem tego. Między napisaniem softu, który "dla mnie działa" a takim, który można pokazywać ludziom jest niestety długa droga.
Na razie sprzedaję profiler, który "przy okazji" napisałem (link w stopce).

1 użytkowników online, w tym zalogowanych: 0, gości: 1