Mongodb: co warto wiedzieć przed użyciem? [zamknięte]

Rozpoczynam hobbystyczny (nie dochodowy) projekt używając Ruby on Rails. Zrobiłem sporo rozwoju w Rails używając Postgresql i mogę zrobić całkiem dobrą imitację znormalizowanego schematu. Jednak Mongrodb wygląda lśniąco i nowocześnie. Co jest lepszego do wypróbowania czegoś nowego niż projekt hobby?

Przypomnij sobie, Kiedy zacząłeś używać Mongodb. Jakich technik nauczyłeś się później, że powiedziałeś: "Gdybym tylko wiedział, że kiedy zacząłem!"Jakie wtyczki odkryłeś, że użyłbyś tego od samego początku, gdybyś tylko wiedział? Jakie referencje chciałbyś mieć zakładki?

Author: Simone Carletti, 2010-01-23

5 answers

Zdecydowanie popieram rekomendację MongoMapper, jeśli zamierzasz używać MongoDB z Rails. Ostrzegam jednak, że nie ma (na razie) żadnej dokumentacji innej niż kilka postów na blogu. Jeśli nie czujesz się komfortowo grzebając w kodzie źródłowym, aby zobaczyć, jak to działa, prawdopodobnie nie jest to jeszcze dla Ciebie.

Jeśli pracujesz poza Rails, polecam trzymać się z dala od MongoMapper. Ponieważ działa MongoDB w coś podobnego do tego, czego oczekujemy od ORM wspierany przez SQL, nie daje dobrego wyobrażenia o sile i odmiennym myśleniu stojącym za MongoDB. Poświęć trochę czasu na zabawę ze sterownikiem ruby niższego poziomu, a nawet w konsoli javascript.

Inną rzeczą, którą polecam, zwłaszcza, że wspomniałeś o normalizacji schematu, jest Nie myślenie o MongoDB jako bazie danych na razie. Sposób organizacji danych w MongoDB jest zupełnie inny niż w przypadku relacyjnej bazy danych. Spróbuj pomyśleć o to bardziej jako miejsce do przechowywania i pobierania Ruby hashes. Możesz zrobić kilka rzeczy relacyjnych z MongoDB, ale polecam trzymać się tylko samodzielnych dokumentów, gdy próbujesz owinąć głowę NoSQL.

Jeśli chodzi o to, na jakie linki powinieneś spojrzeć, Gorąco polecam przeczytanie wszystkiego, co możesz na stronie MongoDB. Ich dokumentacja jest bardzo dobra. Szczególnie, spójrz na zaawansowane zapytania, indeksy multikey i MapReduce to zapoznaj się z wyjątkowymi zaletami i mocnymi stronami bazy danych NoSQL.

 63
Author: Emily,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-26 22:28:40

Jestem prawie na tym samym etapie, co Ty. Rozpoczęcie nowego projektu z MongoDB. Mam około 7 tygodni doświadczenia. To jest to, co znalazłem bardzo przydatne:

Użyj Mongoid zamiast Mongomapper

Http://mongoid.org/

Dokumentacja jest doskonała. Poważnie, świetnie. Przeczytanie całej dokumentacji zajmie ci około 15 minut, a będziesz miał bardzo dokładne wyobrażenie, co możesz zrobić, a czego nie możesz zrobić z Mongoidem.

Tomorrow, The release candidate dla nowej głównej wersji mongoid zostanie wydany. Przyniesie wiele przydatnych rzeczy.

Używam Rails 3. Aby zainstalować wersję rozwojową dodaj to do swojego pliku gem:

Gem 'mongoid', " ~ > 2.0.0.beta "

Obecna beta to 20, ale jak już mówiłem, jutro pojawi się release candidate.

Również sugeruję, aby dołączyć do grupy google, jak również. Ma mały ruch i ludzie są bardzo chętni do odpowiedzi na każde pytanie. Na przykład pokazałem im mój pierwszy projekt modelu DB i dali mi wiele sposobów, aby to poprawić. Twórca Mongoid również odpowiada na twoje pytania.

W dwóch słowach: Wielka Wspólnota.

Istnieje ta wtyczka, która umożliwia używanie Machinist z mongo:

Https://github.com/nmerouze/machinist_mongo

Działa całkiem nieźle.
gem 'machinist_mongo', :require => 'machinist/mongoid', 
:git => 'http://github.com/nmerouze/machinist_mongo.git',
:branch => 'machinist2'

Możesz użyć falsyfikatu z Machinist. Super mix.

Https://github.com/sevenwire/forgery

Another thing I want to powiedz. Pochodzę ze świata bazy danych relacji, więc na początku brzmiało to naprawdę dziwnie: możesz zapisywać pliki w bazie danych mongo.

W rzeczywistości może to być szybsze niż zarządzanie nimi, jak to robiliśmy. Jest to spowodowane wsparciem mongo dla shardingu. Sharding oznacza, że możesz użyć klastra komputerów do obsługi bazy danych Mongo. Jest bez szwu. Pan-niewolnik. Możesz więc obsługiwać Plik z wielu komputerów, z których każdy wysyła porcję. Bardzo dobrze się skaluje:)

Odbywa się to za pomocą GridFS. http://www.mongodb.org/display/DOCS/GridFS

Mongoid obsługuje konfigurację master-slave. Zapytaj mnie, czy potrzebujesz więcej informacji.

Edit:

Także: http://railscasts.com/episodes/238-mongoid

 26
Author: Nerian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-06 21:46:31

1. Query its not case-sensitive

Eq

"_id": "1da259c70fe3392c3b000002",
"name": "Dany"

array('name' => 'dany') :: results 0
array('name' => 'Dany') :: results 1

2. Last insert ID:

$coll->insert($user, true);
echo (string) $user['_id'];

3. _id jest obiektem Mongoidowym

Znajdź według id:

$p->findOne(array('_id' => new MongoId( $UID  )), array('proj'));

Show _id:

$coll['_id'] = ( string ) $coll['_id'];

Również _id jest tylko unikalny dla każdej kolekcji, może być inny na innym serwerze

4. MongoDB obsługuje LIMIT, OFFSET, ORDER

Dla pewnego Zaawansowanego sortowania można użyć frameworka agregacji.

5. W języku SQL is SQL injection in MongoDB is Array injection

Więc kiedy Zapisz niektóre dane use (string) lub check is_array

$req = (string) $range['name'];

6. HDD DOS

Domyślny rozmiar _POST to 8MB w PHP, w Mongo są limity na dokument 16MB. Wyobraź sobie więc jakiś fałszywy ciąg eq USER_AGENT w skrypcie analitycznym, a następnie wyślij 16MB na pojedynczą wstawkę.

7. W przeszłości było kilka problemów z MongoDb, ale teraz 3.0 jest całkiem niesamowite i stabilne.

 8
Author: user956584,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-23 08:24:44

[0]} oto wielki początkujący / wprowadzenie do podcastu MongoDb z. NET Rocks -

Http://www.dotnetrocks.com/default.aspx?ShowNum=507

Mike Dirolf jest interviewed... pracuje nad projektem MongoDb. A jakość dźwięku jest doskonała.

Mike Dirolf jest inżynierem oprogramowania w 10gen, gdzie pracuje nad projektem MongoDB. Pracuje głównie nad sterownikami klienckimi dla Pythona i Rubiego, ale zajmuje też trochę czasu, aby porozmawiać o MongoDB - zaprezentował na EuroPython, Strange Loop Conf, RubyEnRails, RuPy i RubyConf oraz grupy meetup w Nowym Jorku, Londynie, Waszyngtonie i San Francisco.
 3
Author: Kris Krause,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-01 10:28:07

Koniecznie zajrzyj do junemakers mongo-mapper: http://github.com/jnunemaker/mongomapper ale polecam również pobawić się trochę czystym sterownikiem Ruby Mongo, aby zobaczyć, jak działa mongo-mapper pod maską. Nie jest bardzo trudno umieścić niektóre dane w bazie danych Mongo przy użyciu Ruby.

Chyba już znalazłeś Tutorial Ruby Mongo. Na wszelki wypadek, oto link: http://www.mongodb.org/display/DOCS/Ruby + Tutorial

 2
Author: t6d,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-24 11:57:20