использовать perl для анализа большого файла и вставки данных в mongo, индексировать до или после дампа данных в db?

Теперь я использую mongodb для сохранения файла очень большого размера (90G), который содержит почти 40 000 000 элементов.

Я читаю и анализирую этот файл и вставляю все элементы в mongodb (мой язык программирования — perl, batch_insert вместо вставки, и я сопоставляю один элемент с одним документом mongodb).

Прежде чем вставлять, я уже создал индексы (около 10 ключей индекса).

Я обнаружил, что скорость вставки не может удовлетворить мои потребности (от 200 до 400 элементов в секунду).

Я знаю, что слишком много ключей индекса определенно замедлят мою вставку, особенно когда размер коллекции становится довольно большим.

Итак, мне интересно, смогу ли я проиндексировать их после того, как я сбросил все данные в базу данных. Кто-нибудь может сказать мне, доступен ли этот способ или может ли этот способ определенно сэкономить мое время?


person wuchang    schedule 19.12.2013    source источник
comment
Вы можете прочитать mongodb.com/learn/big-data, они конкретно говорят о, operational и analytical вариантах использования монго   -  person Noam Rathaus    schedule 19.12.2013
comment
Спасибо. Мне понадобится некоторое время, чтобы прочитать его. Он выглядит как раз подходящим для моих нужд.   -  person wuchang    schedule 19.12.2013


Ответы (1)


Вы можете попробовать удалить индексы перед большой вставкой, а затем снова создать индексы после. Это может быть значительно быстрее.

person alex    schedule 19.12.2013
comment
Большое спасибо. Но поскольку размер данных действительно велик, меня беспокоит время создания индекса после того, как я сбросил данные в mongodb. Я только что разделил большой файл на несколько частей и проанализировал их одновременно. Но у меня будет проба вашей идеи. - person wuchang; 20.12.2013