Индексиране на 20 милиона записи с python и mongoDB

Бих искал да спомена за моя малък проект и дали съм на път. Имам нужда от работа с всички статии от Medline (http://www.nlm.nih.gov/bsd/licensee/2011_stats/baseline_doc.html). За тези, които не са запознати с базата данни на Medline, добавям малко информация:

  • Има ок. 20 000 000 записа (83,4 GB дисково пространство), всеки има много полета и подполета.
  • Можете да изтеглите тази DB (с лиценз) в XML формат.
  • Тези 20 милиона записи са разпределени в 653 файла.
  • Всеки файл има един MedlineCitationSet, а това набор от записи (MedlineCitation's).

Искам да обработя тези записи и да получа информация като заглавие, резюме... Тогава реших да индексирам тези файлове (или записи) с python и mongodb. И имам един вариант:

Създадох анализатор на medline и за всеки запис се създава JSON запис за mongoDB и след индексиране от pubmedID. След това мога да създам функция като get_abstract('pubmedID'):string.

Въпросите ми са:

  • Добра идея ли е? (XML анализиране --> JSON --> вмъкване и индексиране!)
  • Мога ли да използвам GridFS и да получа еквиваленти на парчета на записи за всеки файл? как?
  • Знаете ли друг начин?

person Àlex    schedule 03.05.2011    source източник
comment
Работи ли? Тогава е добре. Имате ли проблем? Ако е така, моля, предоставете действителния проблем, който имате. Изглежда, че истинският ви въпрос е много прост -- как да използвате GridFS. Може би трябва да се съсредоточите конкретно върху това от каква конкретна помощ се нуждаете. Знаете ли друг начин е глупав въпрос, има безкраен брой други начини, повечето от които са лоша идея.   -  person S.Lott    schedule 03.05.2011
comment
Благодаря ти S.Lott! Да, точният ми въпрос би бил как мога да комбинирам GridFS с Medline Files? алекс.   -  person Àlex    schedule 03.05.2011
comment
Имам проблеми с моя анализатор XML2JSON, защото този XML не е тривиален и не знам дали GridFS може да ми помогне...   -  person Àlex    schedule 03.05.2011
comment
Àlex: Това звучи като два отделни въпроса, само малко свързани с този въпрос. Преди да зададете тези други въпроси, моля, прочетете колкото можете повече за GridFS и задайте възможно най-конкретен въпрос относно използването на GridFS с файлове на Medline. Всички софтуери могат да бъдат интегрирани; трябва да четете много, за да можете да ни дадете някои насоки и насоки как искате да продължите. проблеми с моя анализатор XML2JSON е безсмислен и объркващ. Какъв точно проблем имате? Моля, бъдете много, много конкретни и включете действителния код, който причинява действителния проблем.   -  person S.Lott    schedule 03.05.2011
comment
I want to process these records and get information such as title, abstract - звучи сякаш имате нужда от elasticsearch, а не от mongodb.   -  person Burhan Khalid    schedule 19.02.2015


Отговори (1)


Добра идея ли е? (XML анализиране --> JSON --> вмъкване и индексиране!)

Работи ли? JSON обикновено е по-малък от XML, това вероятно е добра промяна.

Мога ли да използвам GridFS и да получа еквиваленти на парчета на записи за всеки файл? как?

GridFS обикновено е за съхранение на статични файлове като изображения или видео. MongoDB може да поддържа много големи документи (16MB == няколко романа). Текстът за статия в medline вероятно ще бъде много по-малък от този.

Ако просто планирате да съхранявате текст, тогава не трябва да имате нужда от GridFS. Ако искате да съхранявате изображения, тогава GridFS е полезен за това.

Моля, прочетете за GridFS тук. Имайте предвид, че GridFS е само спецификация. Всичко все още се съхранява в обикновени колекции MongoDB.


PS: изглежда, че pubmedID е уникален ключ. Можете да спестите място, като замените _id с pubmedID, когато създавате документа.

i.e.: collection.insert({"_id": xml_obj.pubmedID, "text" : xml_obj.article_text})

person Gates VP    schedule 03.05.2011