Вы можете попробовать использовать CouchDB.Это документно-ориентированная база данных.Есть примеры (например, здесь ) хранения миллионов и более документов.
Существует хорошее руководство для CouchDB.
Ваше поле числового идентификатораможет использоваться в качестве идентификатора документа.
Вы можете попробовать написать скрипт на python, который заполняет базу данных, используя массовые API (чтобы ускорить вставку этого количества объектов)
Представления могут использоваться для выполнения различных запросов.
[править]
Мне было интересно узнать об использовании памяти CouchDB и провел простой эксперимент.
Я вставил документы 5kk порциями по 50 тысяч документов в пустую базу данных.Это заняло около 15-20 минут на моем MacBook Code Duo.Во время вставки максимальное потребление памяти процессом CouchDB составляло 120 МБ при вставке 50 КБ документов в чанк и около 60 МБ при вставке 25 КБ.
Окончательный размер базы данных составляет около 1,2 ГБ.Потребление памяти в режиме простоя CounchDB составляет 40 МБ.Извлечение отдельных документов происходит мгновенно (с помощью веб-интерфейса Futon).
Я вставлял документы следующего формата (JSON, созданный с помощью Python):
'{"_id" : "%09d", "name" : "example", "field%d" : "hello"}' %
(num, random.randint(0, 100))
или
{"_id" : "005049980", "name" : "example", "field77" : "hello"}
_id
используется в качестве ключа, и документы сортируются по этому ключу.
О предоставленных вами примерах запросов.Они неэффективны, потому что, как правило, вам нужно пройти весь набор документов, чтобы получить результат.Но оба могут быть оптимизированы после создания специальных представлений.