2013-02-05 21 views
36

Mam bazę danych Mongo, której nie utworzyłem ani nie zaprojektowałem, czy istnieje dobry sposób na introspekcję bazy danych lub wydrukowanie struktury, która pozwoli uzyskać informacje o tym, jakie typy dane są przechowywane, jak typy danych są zagnieżdżone, itp.?Jak mogę odkryć strukturę bazy danych Mongo?

Odpowiedz

19

Tu jest rzeczywiście narzędzie, aby pomóc tutaj nazwie odmiany:

http://blog.mongodb.org/post/21923016898/meet-variety-a-schema-analyzer-for-mongodb

Można zobaczyć repo GitHub na tym tutaj: https://github.com/variety/variety

I prawdopodobnie powinien ostrzec, że:

  • Używa MR do wykonania swoich zadań
  • Używa niektórych o te pytania, które mogą doprowadzić do ustabilizowania produkcji pod względem wydajności.

Jako takie, polecam uruchomić to na serwerze rozwoju lub ukrytym węźle repliki lub coś takiego.

W zależności od rozmiaru i głębokości dokumentów może to potrwać bardzo długo, zanim zrozumiemy szorstką strukturę bazy danych, ale w końcu ją otrzymamy.

+4

Nowy adres URL i został niedawno zaktualizowany na dzień dzisiejszy 2014-10-14. https://github.com/variety/variety Odmiana, analizator schematów dla MongoDB. Bardzo pomocne! – AnneTheAgile

22

Wystarczy zapytanie do bazy danych, uruchamiając następujące polecenia w powłoce Mongo:

use mydb //this switches to the database you want to query 
show collections //this command will list all collections in the database 
db.collectionName.find().pretty() //this will show all documents in the database in a readable format; do the same for each collection in the database 

Powinieneś być w stanie zbadać strukturę dokumentu.

+1

Co zrobić, jeśli niektóre dokumenty różnią się od innych? Ta metoda nie pokaże WSZYSTKICH pól lub całej przechowywanej struktury. – Sammaye

+0

@ Sammaye masz rację ... będzie potrzebował skryptu, aby dotrzeć do wszystkich dokumentów i porównać wszystkie klucze, a następnie wydrukować strukturę drzewa jest prawdopodobnie dobrym wizualnym sposobem pokazania całej struktury i uczynienia jej strawną. – br3w5

+1

@Sammaye @ssbrewster: Możesz użyć skryptu [this] (https://gist.github.com/hkasera/9386709), aby uzyskać strukturę swojej kolekcji. Daj mi znać, jeśli to będzie pomocne. 'mongo mongo-struc.js> struc.json' – hkasera

4

Zalecam ograniczenie zestawu wyników zamiast wydawania nieograniczonego polecenia find.

use mydb 
db.collectionName.find().limit(10) 
var z = db.collectionName.find().limit(10) 
Object.keys(z[0]) 
Object.keys(z[1]) 

Pomoże to zrozumieć strukturę bazy danych lub jej brak.

+0

Jedynym problemem jest to, że nie ma sposobu, aby powiedzieć, że liczba, którą otrzymasz, reprezentuje strukturę bazy danych, możesz mieć 1000001 rekordów i ograniczyć 1000000 z nich, ale przegapisz istniejące pole w ostatnim dokumencie, ponieważ inny 1000000 go nie ma – Sammaye

+0

Zgadzam się z tobą tam. Jednak szybkie i brudne może wystarczyć. Znam wiele przypadków użycia, w których mongo jest używane jako półstrukturalny magazyn danych podobny do tradycyjnego RDMS. W drugim przypadku technika ta nie zapewni pełnej struktury, ale może przynajmniej zapewnić coś szybkiego. Użyłem narzędzia odmiany i lubię go do kompleksowej analizy schematu. – Paul

+0

Prawda, a gdzieś istnieje narzędzie, zapomniałem jego nazwy, która w rzeczywistości bierze 10 zapytań o ograniczone 10 zapytań, próbując stworzyć wydajny analizator schematów. – Sammaye

5

To drukować nazwę i typ

var schematodo = db.collection_name.findOne() 
for (var key in schematodo) { print (key, typeof key) ; } 
3

Jest to narzędzie open source, że ja wraz z moim przyjacielem, stworzyły - https://pypi.python.org/pypi/mongoschema/

Jest to biblioteka Pythona z całkiem proste stosowanie. Możesz go wypróbować (nawet przyczynić się).

2

Jedną opcją jest użycie Mongoeye. Jest to narzędzie open-source podobne do Variety.

Różnica polega na tym, że Mongoeye to samodzielny program (Mongo Shell nie jest wymagany) i ma więcej funkcji (histogramy, najczęstsze wartości itp.).

https://github.com/mongoeye/mongoeye

1

Kilka dni temu znalazłem GUI klienta MongoDB Compass z niektórymi ładne wizualizacje. Zobacz product overview. Pochodzi bezpośrednio od osób mongodów i zgodnie z ich dokumentem:

MongoDB Compass został zaprojektowany, aby umożliwić użytkownikom łatwą analizę i zrozumienie zawartości ich kolekcji danych w MongoDB ...

Powiązane problemy