Od jakiegos czasu chodzi mi po glowie pewien (szalony) pomysl - otoz nosze sie z zamiarem napisania nowego web-framework’a… Moze to brzmi troche dziwnie, wiedzac ze jest cos takiego jak rails, ale… Chce to zrobic ze wzgledow powiedzmy osobistych - nie chce sie przekopywac przez cala dokumentacje ActiveRecord, ActionPack itd. po to by wykorzystać maksymalnie możliwości railsow, wole stworzyć rozwiazanie w pelni dostosowane do potrzeb mojego serwisu, calkowicie transparentne i proste(dla mnie). I tutaj pytanie… Jakiego ORM’a polecilibyście?
Do budowy frameworka chce uzyc engine Ramaze (http://ramaze.rubyforge.org); system szablonow - mysle o haml; a jeśli chodzi o orm’a - to myslalem o Sequel (http://sequel.rubyforge.org). Do tego doszlyby jeszcze generatory a la Rails
og’a znam - moim zdaniem troche toporny… Ogladalem sobie tez Kansas z IOWA framework , ale jest to operowanie prawie czystym SQL’em… Szukam czegoś podobnego do ActiveRecord ale lzejszego. Sequel po kilku dodatkach (dodanie validacji i modulu dla warunkow) chyba bylby ok… Ale moze slyszeliscie albo widzieli w akcji cos jeszcze innego?
Od jakiegos czasu chodzi mi po glowie pewien (szalony) pomysl - otoz nosze sie z zamiarem napisania nowego web-framework’a… Moze to brzmi troche dziwnie, wiedzac ze jest cos takiego jak rails, ale… Chce to zrobic ze wzgledow powiedzmy osobistych - nie chce sie przekopywac przez cala dokumentacje ActiveRecord, ActionPack itd. po to by wykorzystać maksymalnie możliwości railsow, wole stworzyć rozwiazanie w pelni dostosowane do potrzeb mojego serwisu, calkowicie transparentne i proste(dla mnie). I tutaj pytanie… Jakiego ORM’a polecilibyście?
Do budowy frameworka chce uzyc engine Ramaze (http://ramaze.rubyforge.org); system szablonow - mysle o haml; a jeśli chodzi o orm’a - to myslalem o Sequel (http://sequel.rubyforge.org). Do tego doszlyby jeszcze generatory a la Rails[/quote]
Wiesz, zamurowało mnie, nie wiem co myśleć. Przecież właśnie w ten sposób starasz się zrobić drugie railsy. Jestem o tyle zdziwiony, bo takie zachowanie spotykałem bardzo często wśród ludzi piszących na co dzień w php (każdy pisał swój framework, bo jego najlepszy, najszybszy i w ogóle dostosowany do jego potrzeb), ale wśród Rubistów coś takiego widzę pierwszy raz :). W zasadzie to widzę, że chcesz połączyć kilka istniejących bibliotek w 1 całość. Chcesz coś podobnego do AR, haml - to wszystko masz w railsach (haml po doinstalowaniu pluginu, była ostatnio dyskusja na forum). I chcesz powiedzieć, że przez dokumentację tych 3 różnych projektów nie będziesz musiał się przedzierać? Zresztą kto Ci każe znać perfect railsy? Chyba nikt nie czytał całej jego dokumentacji, tylko zagląda tam jak czegoś szuka lub nie pamięta :).
radarek: nie interesuje mnie stworzenie nowych railsow - bo one są “doskonaloscia” sama w sobie - chodzi bardziej o (jak to okresliles) “połączenie kilku istniejących bibliotek w 1 całość”.
ramaze jest meta-frameworkiem, a sequel dobrym (jeszcze nie doskonalym) i lekkim orm’em…
chodzi o jeszcze bardziej “agile programming”… Czy to sie uda - nie wiem - i dopoki nie sprobuje nie dowiem sie tego…
Nie wywodze sie z php’a - bo zawsze od tego jezyka odpychalo mnie brak namaspaces i ta cala “sieczka” i mysle ze gdyby nie ruby - to w zyciu nie wzialbym sie za programowanie na potrzeby “webu”… ciesze sie ze moglem Cie zaskoczyć
Przypomne tylko ze Railsy same w sobie sa tak naprawde zbiorem bibliotek ActiveRecord, ActionPack, ActionMailer etc. Kiedys to byly po prostu odrebne biblioteki.
Moim zdaniem największy postęp jaki mógłby dokonać się w Rails to przejście na obiektowe bazy danych.
Sugeruję więc zainteresowanie się DyBase i GOODS. Przydałoby się zbadać, czy potencjalnie mogłyby się nadawać do produkcyjnego wykorzystania w aplikacjach Ruby/RoR.
Są mniej wydajne niż wiodące, dobrze zoptymalizowane bazy relacyjne.
Są wystarczająco wydajne, aby zasilać niektóre duże aplikacje webowe.
Np. http://indico.cern.ch to aplikacja do zarządzania konferencjami, wykładami, spotkaniami, dokumentami i salami w CERN (Europejska Organizacja Badań Jądrowych).
Z aplikacji korzysta dziennie kilka - kilkadziesiąt tysięcy użytkowników, z czego część pracuje na niej cały czas. W bazie jest ponad 40.000 imprez. Z jedną dużą konferencją potrafi być związanych ponad 10.000 trwałych obiektów. Plik bazy danych zajmuje 4,5GB (po czyszczeniu).
Aplikacja działa nad ZODB - bardzo solidną obiektową bazą danych dla Pythona. Niestety nie ma analogicznego produktu dla Rubiego i nie widać pracy w tym zakresie.
Tymczasem powszechnie stosowane rozwiązana O/RM są tylko namiastką wygody, jaką daje prawdziwa obiektowa baza danych.
Prawdopodobnie nie widac pracy bo wiekszasc osob skupia sie na ActiveRecordzie i “innych” relacyjnych backendach ktory ma obslugiwac (mysql, pgsql, oracle, mssql) AR w polaczeniu z tymi bazami spelnia prawdopodobnie ich potrzeby obiektowosci danych
Ciekaw tez jestem jakie mozliwosci daje obiektowosc w bazach danych, napewno relacje rekurencyjne sa bardziej przyjemne, rekordy parent, child w mysql nie sa tak przejrzyste jak np w oracle przy wykorzystaniu ActiveRecord - ok sa pluginy ktore oferuja jakas tam funkcjonalnosc, ale implementacja generuje zbyt wiele zapytan sql.
Tu nawet nie chodzi o to, że obiektami trochę łatwiej zamodelować rzeczywistość, że są bardziej elastyczne.
Najważniejsze jest to, że w ogóle przestajemy zajmować się czymś takim jak “baza danych”. Po prostu piszemy obiektowy program, mając złudzenie, że RAM jest trwały.
Natychmiast widać, że czai się tu ogromna nieoptymalność (wziąć do RAM wszystkich klientów, dla każdego wykonać zapytanie o wszystkie zamówienia…). Tymczasem przy obiektowej b.d. jest to naturalne i wydajne podejście.
W ogóle wszelkie silniki baz danych to rozwiązanie tymczasowe i brudne. Przestaniemy ich używać gdy tylko pojawi się pamięć łącząca cechy RAM i dysku, czyli trwała, duża i (wystarczająco) szybka.