Никакой-sql вопрос об отношениях

Я готов дать MongoDB и CouchDB серьезную попытку. До сих пор я работал немного с монго, но я также заинтригован УСПОКОИТЕЛЬНЫМ подходом Дивана.

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

Например, если у меня есть 1 000 автомастерских и 1 000 автомобильных типов, я хочу указать, какие автомобили каждый магазин продает. Каждый автомобиль имеет 100 функций. В реляционной базе данных я сделал бы среднюю таблицу для соединения каждой автомастерской с автомобильными типами, которые она продает с помощью идентификаторов. Каков подход Нет? Если каждая автомастерская продает 50 автомобильных типов, это означает копировать огромный объем данных, если я должен сохранить в автомастерской все функции всех автомобильных типов, это продает!

Любая справка ценится.

6
задан Community 22 September 2017 в 18:01
поделиться

3 ответа

Корпорация Майкрософт опубликовала документ по этому вопросу. Я его не читал.

http://download.microsoft.com/download/1/6/f/16fd06b3-7059-4e21-adf4-9fbdcb9a2853/MsftOfficeUIAnsResearch.pdf

-121--4690675-

Украл код из этого вопроса и ищет ответ HitScan.

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
// or use the UIImage wherever you like
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]]; 
CGImageRelease(imageRef);
-121--4648349-

В MongoDB часто используемым подходом было бы хранение списка _ids типов автомобилей в каждой автомастерской. Таким образом, нет отдельной таблицы соединений, но по-прежнему в основном делает соединение на стороне клиента.

Внедренные документы становятся более актуальными для таких случаев, как «не многие ко многим».

1
ответ дан 17 December 2019 в 07:04
поделиться

С точки зрения HBase/BigTable, обычно вы полностью денормализуете данные и используете поле "список" или столбец многомерной карты (см. эту ссылку для лучшего описания).

Слово "колонка" - это еще одно нагруженное как "таблица" и "база", которое несет в себе эмоциональный багаж многолетнего опыта работы с РСУБД.

Вместо этого, я нахожу, что легче думать об этом как о многомерной карте - Карта карт, если хотите.

В вашем примере для отношений "многие-ко-многим" вы можете создать две таблицы и использовать столбец многомерной карты для хранения отношений между таблицами.

См. вопрос 20 в FAQ по Hadoop/HBase FAQ:

Q:[Michael Dagaev] How would you спроектировать таблицу Hbase для много-ко-многим ассоциации между двумя сущностями, например например, студент и курс?

Я бы определить две таблицы: Студент: студент данные студента (имя, адрес, ...) курсы (используйте идентификаторы курсов в качестве столбцов Курс: идентификатор курса данные курса (название, учебный план, ...) студенты (используйте идентификаторы студентов в качестве имеет ли это смысл?

A[Джонатан Грей]: Ваша схема действительно имеет смысл. Как вы сказали, вы вероятно, будет два семейства столбцов в в каждой из таблиц "Студент" и "Курс". Одно для данных, другое с столбцом для каждого студента или курса. Для например, строка студента может выглядеть например: Студент : id/row/key = 1001 data:name = Имя студента data:address = 123 ABC St courses:2001 = (Если вам нужна дополнительная информация об этом ассоциации, например, если они в списке ожидания) курсы:2002 = ... Эта схема дает вам быстрый доступ к запросам, показывающим все занятия для студента (таблица "студент", "курсы семейство), или все студенты для класса (таблица "Курсы", семейство "Студенты").

0
ответ дан 17 December 2019 в 07:04
поделиться

Я могу разговаривать только с CouchDB.

Лучший способ сохранить данные в базе данных - это вообще не нормализовать их, кроме преобразования в JSON. Если эти данные - "автомобили", то вставьте все данные о каждой машине в базу данных.

Затем вы используете map / reduce для создания нормализованного индекса данных. Итак, если вам нужен индекс каждой машины, сначала отсортированный по магазинам, а затем по типу машины, вы должны указать каждой машине индекс [магазин, тип машины].

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

http://wiki.apache.org/couchdb/View_collation

Только с этим вы можете создавать удивительные нормализованные индексы по разным документам с помощью системы сокращения карты в CouchDB.

3
ответ дан 17 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: