2015-03-27 5 views
0

Я должен разработать большое приложение, необходимое для понимания концепций базы данных графа. Ссылка на http://sparsity-technologies.com/UserManual/API.html#transactions.I Планируется использовать основные данные вместо работы с рамкой. Я хочу, чтобы ответчики задавали следующие вопросы.Являются ли основные данные своего рода графической базой данных?

1) Что такое Графическая база данных именно?. Выполните простой общий пример, который мы не можем выполнить с помощью sqlite.

2) Имеются ли данные ядра под реляционной базой данных или нет? Объясните.

3) Имеются ли данные ядра в базе данных Graph? Но в документации к яблоку они упомянули, что основные данные предназначены для управления графом объектов. Графическое управление графом. Графическая база данных. Если я хочу сделать отношения с судами, подходит ли взвешенный край между объектами данных ядра ?.

+1

Вам, скорее всего, лучше объяснить проблема, которую вы пытаетесь решить. Основные данные являются гибкими и могут делать много вещей, но это не делает его правильным решением во всех случаях. Решение на стороне клиента может быть даже не лучшим ... – Wain

ответ

0

Основные данные - это не что иное, как Data Model Layer, core data is NOT a datatbase и далеко от базы данных графа.

Основные данные только поможет вам

  • Создание таблицы (Entities)
  • столбцов в таблице (Attribute)
  • Отношения (например, первичный ключ, внешний ключ, один на один, один в многие)

Основные данные используют sqlite для хранения данных и выполнения запросов.

Основные данные используются в мобильных приложениях iOS, я считаю, что то, что вы хотите, является бэкэнд-решением для базы данных.

+0

Извините, я знаю, как использовать основные данные. – MuraliMohan

+0

Основные данные не связаны с SQL. Он не обязательно использует SQL для сохранения, вы можете написать свой собственный задний конец, если хотите. – TechZen

0

1) Что такое база данных диаграмм именно?. Выясните простой пример .Что мы не можем выполнить с sqlite.

Ну, так как это все готово к Тьюрингу, вы можете сделать это с любой базой данных с любой другой базой данных, реальный вопрос - вопрос эффективности.

В обычных «реляционных» базах данных «отношения» - это не что иное, как указатели на записи в других таблицах. Они по сути не сообщают никакой информации, кроме «А связано с B». Чтобы захватить и структурировать что-либо более сложное, вам нужно построить много псевдоструктуры.

A1 -> B1 // например. имя, фамилия, имя

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

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

«Отношения» GraphDBs, благодаря предыдущему значению в SQL и др., Действительно нуждаются в другом термине, потому что вместо простых указателей они могут быть произвольно сложными объектами.В узле имен (путь к простому, чтобы на самом деле его оправдать)

Node-Name-A - (наступает раньше) -> Node-Name-B Node-Name-B - (появляется после) - -> Node-Name-B

В sqlite, чтобы найти имя и фамилию, вы запрашиваете обе таблицы. На графике вы захватываете один из узлов и следуете его отношению к другому узлу.

(Давай думать об этом, теории графов в математике начал как способ моделирования мостов Кенигсберга, соединяющих острова, составившие город. Так что, возможно, транспорт карта будет лучше пример)

Если города - это узлы, дороги - это отношения. Дорожные объекты/дескрипторы просто соединяют эти два, но будут содержать свою собственную логику и данные, такие как их направление, длину, условия, движение, suseptiblity для погоды и т. Д.

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

Все, что вам нужно сделать вычислительно, хотя и сравнить отношения между любыми узлами. Это называется «ходить по графику». Огромное преимущество заключается в том, что независимо от того, насколько велика общая БД, вам нужно обработать отношения, исходящие из первого узла, скажем 3, и полностью игнорировать миллионы других узлов и отношения, которые могут быть в БД.

Невозможно сделать это в sqlite. Чем больше данных, тем больше «отношений», чем больше вы должны обрабатывать

2) Имеет ли базовые данные реляционные базы данных или нет? Объясните.

Нет, но если вы нажмете несколько баров, вы можете подделать его. По умолчанию Core Data является графом Object, что означает, что он соединяет объект/узлы, но отношения сами по себе не являются объектами, а вместо этого определяются информацией, содержащейся в классе для каждого объекта. Например. у вас могут быть основные данные обычной компании, менеджера и сотрудника.

CompanyClass 
    set_of_manager_objects 
    min_managers==1, max_managers==undefined 
    delete_Company_Object_delete_all_manager_objects 
    reciprocal_relationship_from_manager_is_company 

ManagerClass 
    one company object 
    min_companies==1, max_companies==1 
    delete_manager_object_nullify (remove from set in company class) 
    recipocal_relationship_from_company_is_manager 

Итак, Core Data является своего рода «недостающим звеном» в эволюции GraphDB. У меня есть отношения, но они не являются объектами самих себя. Они находятся внутри объекта/узла. Свойства отношений жестко закодированы в самих классах и несколько, но не все значения могут быть изменены. Тем не менее, Core Data имеет преимущество в том, чтобы ходить по графику. Найти Работников одного менеджера в одной компании. Вы только начинаете с объекта компании, проходите через небольшой набор менеджеров, чтобы найти нужный, а затем идите к набору сотрудников. Даже если у вас были сотни компаний, тысячи менеджеров и десятки тысяч сотрудников. Вы можете найти одного сотрудника из десятков тысяч с несколькими перелетами.

Но вы можете подделать GraphDB, создав объекты отношений и помещая их между любыми двумя объектами/узлами. Поскольку базовые данные позволяют любому подклассу определения отношения быть в одном наборе отношений, например. ManagerClass -> LowManager, MidManager, HighManager, вы можете определить простую связь в любом заданном классе, а затем заполнить объекты произвольной сложности, пока они являются подклассами.Обычно они называются «связывание классов» или «связывание отношений».

Нормальный шаблон состоит в том, чтобы связать класс с двумя или более классами, которые он может связать (что также может быть общим, ve начал генерировать деревья классов с базовым классом, но ничего не изменил свойств отношений, хотя их размер штрафа за производительность, если вы получаете огромные.)

Если вы даете каждому узлу/объекту несколько отношений, определенных на отдельных базовых классах ссылок, вы можете связать те же узлы вместе разными способами.

3) Имеют ли основные данные данные Графической базы данных?

Нет, поскольку основная задача базы данных - сохранение, сохранение данных. Основная задача Core Data - моделирование логики данных внутри приложения.

Две разные вещи. Например, когда я начинаю строить модель Core Data, я начинаю с хранилища в памяти, обычно с тестом. График модели построен с нуля каждый прогон, в памяти, никогда не касается диска. По мере продвижения я перейду на хранилище XML на диске, поэтому я могу проверить его, если это необходимо. XML и двоичные хранилища выписываются один раз целиком и читаются одинаково. Только, в конце концов, я меняю хранилище на MySQL или что-то обычное.

В GraphDB узлы, отношения и общий график привязаны к системам непрерывности AFACT и не могут быть изменены. Когда вы идете по графику, вы каждый раз выполняете упорство (за исключением кеширования).

Обычный вопрос, который задают люди, - это когда использовать основные данные и когда использовать SQL в Apple Ecosystem.

Ответ довольно прост:

основных данных обрабатывает сложности внутри запущенного приложения. Чем сложнее взаимодействие модели данных, тем больше вы получаете доступ к Core Data.

SQL-производные решения обрабатывают объемы простых данных. Если в модели данных внутри приложения мало логики или нет, ее много.

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

Если ваше приложение представляет собой сложное приложение для векторного рисования, где каждый документ будет отличаться и произвольно сложным, или вы моделируете двигатель V8, то большая часть логики в активной модели данных, пока приложение работает, в то время как постоянство тривиально, то Core Data - лучший выбор.

График Базы данных ловят, потому что наши данные получают 1) действительно, действительно большие и 2) увеличивающиеся сложности. Нам нужно смоделировать сложность в графе узлов-связей в персистентности, чтобы мы не пережевали всю БД, чтобы найти данные, а затем добавить дополнительный уровень логики.

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