Как хранить объекты в базе данных для поиска - PullRequest
0 голосов
/ 11 октября 2011

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

Object = {
   "Type":"Car",
   "Color":"Green",
   "Doors":3,
   Wheels:{
       "Material":"Alloy",
       "Size":17,
       "Color":"Black",
       "Tyres":{
          "Profile":"Low",
          "Material":"Rubber"
          "Tread":"Slick"
       }
   },
   Seats:{
       "Number":2,
       "Seatbelts":true
   }
}

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

(например,

Seatbelt:{
    "Type":"Harness",
    "Buckles":1,
    "Color":"Blue"
}

)

В конце концов, если предположить, что объектов много, я бы хотел вернуть список объектов, которые имеют эти характеристики

{
"Type":"Car"
"Doors":3
}

Из этого я могу получить список из 5 автомобилей, которые имеют 3 двери, но имеют различные другие атрибуты, это не имеет значения, я не указал эти критерии. Я мог бы сузить это дальше, ища все 3-дверные машины с гладкими шинами ... Я мог бы вернуться 2

{
   "Type":"Car"
   "Doors":3
   "Wheels":{
      "Tyres":{
         "Tread":"Slick"
      }
   }
}

Итак, я думал о базе данных, имеющей 3 основные таблицы: объекты, атрибуты и значения. Затем связывая таблицы, связывая объекты с атрибутами, атрибуты со значениями. Однако что, если, как в примере, у меня есть объекты, содержащие объекты, а также если я планирую иметь объект автомобиля, расширение которого может быть примером?

Как мы решаем проблему с базой данных такого типа? Можно ли это сделать с помощью реляционной базы данных или мне нужна объектно-ориентированная? Если да, то есть ли какие-либо OODB, которые я могу реализовать с помощью веб-сайта так же легко, как и MySQL.

Если вы можете использовать RDB для этого, тогда запросы, несомненно, будут очень ресурсоемкими? Как насчет OODB? Как ресурсоемкий?

Как создать объектно-ориентированную базу данных для веб-сайта? используя RDB или OODB, я не против, просто как

1 Ответ

0 голосов
/ 11 октября 2011

Я бы взглянул на hibernate (для Java) или nhibernate (для .net).http://www.hibernate.org

Hibernate предоставляет ORM (Object Relational Mapping) для реляционных баз данных (например, MySql)

Другое решение (которое мне лично не нравится) для небольших объемовданные представляют собой XML-файлы, затем вы можете проанализировать данные с помощью выражений xpath.http://www.w3schools.com/xpath

...