кодесурса
«MongoDB

Введение в индекс mongoDB

script1adsense2code
script1adsense3code

Описание

Здесь, в этой статье, давайте объясним, зачем нам нужен индекс базы данных, рассмотрев очень простой пример. Предположим, что у нас есть таблица базы данных с именем Employee с тремя столбцами - Employee_Name, Employee_Age и Employee_Address. Предположим, что таблица Employee имеет тысячи строк.

Теперь, допустим, мы хотим запустить запрос, чтобы найти все детали сотрудников, которых зовут «Алекс»?

Как только мы запустим запрос для достижения указанного выше результата, то, что именно происходит за кулисами, - это найти сотрудников, которых зовут Алекс. База данных должна была бы буквально просмотреть каждую строку в таблице Employee, чтобы увидеть, является ли Employee_Name для этой строки 'Alex'. Таким образом, каждый ряд до последней строки должен быть найден - это означает, что тысячи строк в этом сценарии должны будут быть исследованы базой данных, чтобы найти строки с именем «Alex».

Это почти как просмотр всей таблицы человеческим глазом - этот процесс очень медленный и непростой, поэтому индексы могут сильно помочь.

Весь смысл наличия индекса состоит в том, чтобы ускорить поисковые запросы, существенно сократив количество записей / строк в таблице, которую необходимо изучить.

Индекс - это структура данных (чаще всего B-дерево), в которой хранятся значения для определенного столбца в таблице. Индекс создается по столбцу таблицы. Итак, следует помнить о ключевых моментах: индекс состоит из значений столбцов из одной таблицы, и эти значения хранятся в структуре данных.

Вот графическое представление таблицы индекса.

«MongoDB

Здесь в приведенном выше примере предположим, что у нас есть таблица 'player' из двух столбцов - 'name' и 'age', и мы показали расположение строк в столбце 'row', но отметим, что 'row' не является созданный столбец в таблице.

Слева каждая запись индекса содержит ключ индекса (Имя). Каждая запись также включает ссылку (которая указывает) на строки проигрывателя таблицы, которые разделяют это конкретное значение и из которого мы можем получить необходимую информацию.

Если мы хотим увидеть те строки, которые содержат имя 'Ramel', указатель будет указывать на игрока таблицы в точках 4,6,8 и 1000, который ссылается на индексную таблицу.

Типы индексов

MongoDB предоставляет различные типы индексов для поддержки определенных типов данных и запросов.

_Id по умолчанию

Все коллекции MongoDB имеют индекс в поле _id, которое существует по умолчанию. Если для _id не указаны значения, mongodb создаст поле _id со значением ObjectId.

Индекс _id уникален, он запрещает клиентам вставлять два документа с одинаковым значением для поля _id.

Одиночное поле

MongoDB поддерживает пользовательские индексы для одного поля документа. Ниже приведен пример с одним индексом столбца.

db.userdetails.find().sort({"education":1})

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

Составной индекс

MongoDB также поддерживает пользовательские индексы для нескольких полей. Порядок полей, перечисленных в составном индексе, имеет значение. Например, если составной индекс состоит из {"education": 1, "password": -1}, индекс сортируется сначала по образованию, а затем по каждому значению образования сортируется по паролю. Рассмотрим следующую иллюстрацию этого составного индекса:

db.userdetails.find().sort({"education":1,"password":-1})

Multikey Index

MongoDB использует многоключевые индексы для индексации содержимого, хранящегося в массивах. Когда вы индексируете столбец, содержащий значение массива, MongoDB создает отдельные записи индекса для каждого элемента массива. Эти многоключевые индексы позволяют запросам выбирать документы, содержащие массивы, путем сопоставления с элементом или элементами массивов.

Вот образец документа в коллекции:

{
        "_id" : ObjectId("528f34950fe5e6467e58ae77"),
        "user_id" : "user1",
        "password" : "1a2b3c",
        "sex" : "Male",
        "age" : 17,
        "date_of_join" : "16/10/2010",
        "education" : "M.C.A.",
        "profession" : "CONSULTANT",
        "interest" : "MUSIC",
        "extra" : {
                <span class="style1">"friends"</span> : {
                        "<span class="style2">valued_friends_id</span>" : [
                                "kumar",
                                "harry",
                                "anand"
                        ],
                        <span class="style2">"ban_friends_id</span>" : [
                                "Amir",
                                "Raja",
                                "mont"
                        ]
                }
        }
}

Рассмотрим следующую иллюстрацию индекса с несколькими ключами:

db.userdetails.find().sort({"extra.friends.ban_friends_id":1})

Здесь в приведенном выше примере «extra» - это массив, а «friends» и «ban_firends_id» - это подмассив.

Геопространственный индекс

Для поддержки эффективных запросов данных геопространственных координат MongoDB предоставляет два специальных индекса: двумерные индексы и двухсферные индексы, используемые для плоской геометрии при возврате результатов сферической геометрии для возврата результатов.

Текстовые индексы

Другой тип индекса, который предоставляет MongoDB, - это текстовый индекс, который поддерживает поиск строкового содержимого в коллекции. Эти текстовые индексы не хранят специфические для языка стоп-слова (например, "the", "a", "или") и ограничивают слова в коллекции только для хранения корневых слов.

Хешированные индексы

Для поддержки хеширования на основе хеша MongoDB предоставляет тип хешированного индекса, который индексирует хеш значения поля. Эти индексы имеют более случайное распределение значений вместе с их диапазоном, но поддерживают только совпадения на равенство и не могут поддерживать запросы на основе диапазона.

Свойства индекса

Уникальные индексы

Уникальное свойство для индекса вызывает отклонение повторяющихся значений для индексированного поля. Создать уникальный индекс для поля, в котором уже есть повторяющиеся значения. Помимо ограничения уникальности, уникальные индексы функционально взаимозаменяемы с другими индексами MongoDB.

Разреженные индексы

Свойство sparse индекса гарантирует, что индекс содержит записи только для документов, имеющих индексированное поле, и пропускает документы, которые не имеют индексированного поля.

Параметр разреженного индекса можно комбинировать с параметром уникального индекса, чтобы отклонять документы, которые имеют повторяющиеся значения для поля, но игнорируют те, у которых нет индексированного ключа.

Индексы TTL

Другой специальный индекс - это индексы TTL, которые можно использовать для автоматического удаления документов из коллекции через определенное время. Это идеально подходит для определенных типов информации, таких как сгенерированные машиной данные о событиях, журналы и информация о сеансе, которые должны оставаться в базе данных только в течение ограниченного времени.

Предыдущий: MongoDB DELETE
Далее: MongoDB Single Field Index

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code