2014-01-14 2 views
0

Я работаю над внутренним приложением, чтобы сделать обнаружение хоста/службы. Тип данных, которые я храню, выглядит так:Схема mongodb для rails app

IP Address: 10.40.10.6 
DNS Name: wiki-internal.domain.com 
1st open port: 
port 80 open|close 
open port banner: 
HTTP/1.1 200 OK 
Date: Tue, 07 Jan 2014 08:58:45 GMT 
Server: Apache/2.2.15 (CentOS) 
X-Powered-By: PHP/5.3.3 
Content-Length: 0 
Connection: close 
Content-Type: text/html; charset=UTF-8 

И так далее. Моя первая мысль состоит в том, чтобы просто поместить все это в один документ со строкой, которая идентифицирует данные как «порт», «80». После первоначального сбора данных я понял, что было много дублирования данных, потому что баннеры веб-серверов и т. Д. Часто будут повторно использоваться. Также из 8400 машин с ssh есть только 6 разных баннеров.

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

ответ

0

Гибкая схема MongoDB позволяет вам соответствовать потребностям вашего приложения. Хотя мы часто говорим о денормализации для скорости, вы, безусловно, можете нормализовать, чтобы уменьшить избыточность и затраты на хранение. Исходя из вашего первоначального анализа и беспокойства по размеру базы данных, кажется очевидным, что факторизация избыточности подходит для вашей заявки, в этом случае храните баннеры отдельно и ссылайтесь на них с малыми ints для _ids и т. Д.

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

Смежные вопросы