2011-05-05 15 views
13

Aplikacja Rails 3 działająca na PostgreSQL musi przełączyć się do bazy danych wykresów, aby móc dorosnąć. Jest ich wiele i wszystkie oferują inny rodzaj API, w większości REST.Rails 3 i bazy danych wykresów

Jestem zainspirowany przez talks z Emil Eifrem, CEO NeoTechnologies, o tym, co można osiągnąć za pomocą Neo4j. Muszę przyznać, że grałem z nią i to jest absolutnie to, czego potrzebujemy, ale jest kilka przeszkód.

  1. Interfejs REST API nie jest transakcyjny.
  2. Rails 3 aplikacje działają na Ruby 1.9.2, ale nie jRuby 1.5.3 lub 1.6, aby uzyskać natywny interfejs API.

Niektóre bazy danych są również obsługiwane przez Javę i oferują interfejs API usług REST, więc ich wprowadzenie niczego nie zmienia. Inne nie są dla nas opcją z powodu licencji, kosztów lub braku zespołu za nimi.

Zakładam, że brakuje mi czegoś, więc docenię każdą wskazówkę, wgląd lub poradę na temat naszych opcji i tego, co może nam dobrze grać. Dzięki.

+0

Czy możesz rozwinąć pojęcie "REST API nie jest transakcyjne"? –

+2

Pewnie. Korzystając z interfejsu API REST, nie można wycofać zestawu operacji naraz. Na przykład, chcesz usunąć 3 węzły, wykonać pierwsze i drugie żądanie, ale trzecia jakoś się nie powiedzie i nie możesz przywrócić pamięci do stanu, w którym była, przed rozpoczęciem, słowem "wycofanie". Ale można to osiągnąć dzięki natywnemu API. – mcmlxxxiii

+1

To jest problem. Czy zgłosiłeś ten błąd do facetów neo4j? Jestem pewien, że będą chcieli to poprawić. –

Odpowiedz

9

Możesz uruchomić Neo4jrb z Rails 3 na jruby 1.6, więc nie powinno to stanowić problemu.

Aby uruchomić interfejs transakcyjny (REST), można łatwo napisać własną wtyczkę Neo4j-Server/extension, która może również wewnętrznie używać Neo4jrb, ale udostępnia interfejs API, który pasuje do Twojej domeny i jest mniej gadatliwy/gadatliwy niż drobnoziarnisty interfejs REST API Neo4j-Server. To powinno być również łatwiejsze do skonsumowania dla twoich klientów, ponieważ rozmawia w terminach, słownictwie i przypadkach użycia.

W tej chwili pracujemy nad stworzeniem ogólnego rozszerzenia serwera (j) ruby, które jest w stanie wykorzystać opublikowany kod i udostępnić go jako nowe punkty końcowe REST.

+0

Dziękuję, Michael. Spożywanie opublikowanego kodu brzmi bardzo uspokajająco. – mcmlxxxiii

Powiązane problemy