2014-10-07 6 views
0

Об этом говорили раньше, но я еще не нашел четкого ответа, его просто примерно назвали огнем и водой, и он остался на этом (из моих исследований).Смешивание Relational с None-Relational (MySQL и MongoDB)

Реляционные и нет Реляционные базы данных очень разные, но они оба извлекают данные, для моего проекта я планирую использовать базу данных No Relational, однако это будет установлено во многих местах, а некоторые из них имеют доступ только к MySQL (затем переместились).

Так можно ли заставить MySQL превратиться в некий режим реляционных? Я использовал схему, которая имитирует ее, но она по-прежнему содержит аспекты реляционной базы данных, которые до сих пор мне не удалось преодолеть (чрезмерно зависимая от идентификаторов и т. Д., Что приводило к беспорядочной структуре синтаксиса/данных).

Итак, есть ли волшебная библиотека, которая сделает это?

Вот грубый набросок моей схемы базы данных:

1 таблица «мета» содержит и идентификатор, а также тип и дата и такие, часто искали поля, которые являются универсальными в основном.

1 таблица, содержащая «данные», имеет несколько строк для каждого столбца. Это невозможно сделать через соединение, поэтому его 2 запроса для получения данных.

CREATE TABLE `meta` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `type` varchar(255) NOT NULL, 
    `state` tinyint(3) NOT NULL DEFAULT '0', 
    `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; 

CREATE TABLE `data` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `meta_id` int(11) unsigned NOT NULL DEFAULT '0', 
    `index` varchar(255) NOT NULL, 
    `value` longtext NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; 

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

Какая схема (или концепция) MySQL могла бы лучше всего воспроизвести Нет Реляционная модель (и по-прежнему обрабатывать поиск разумно)?

+0

Если бы такой волшебный переключатель, то не был бы особой необходимости для любой базы данных, кроме MySQL –

+0

вы можете использовать MySQL в качестве немой системы хранения данных, если вы этого хотите. нет ничего, что требует от вас есть несколько таблиц, внешние ключи, и т.д. ... Вы можете иметь одно поле/одну таблицу/одну схему, которая хранит всю вашу систему как непрозрачный сгусток, если вы этого хотят. но тогда возникает вопрос: «Зачем даже начинать с базы данных?» –

+0

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

ответ

2

Во-первых, нет такой вещи, как магия.

Вы изобрели дизайн Entity-Attribute-Value. Это нереляционный дизайн. I've written about this before, но вкратце: вам нужно реализовать в коде приложения множество функций, которые вы считаете само собой разумеющимися в СУРБД, например ограничения и типы данных.

Это связано с концепцией Inner-Platform Effect:

внутреннепризматической Platform Effect является результатом разработки системы настолько настраиваемыми, что она заканчивается становится плохой копией платформы она была разработана с , Эта «настройка» этой динамической внутренней платформы становится настолько сложной, что только программист (а не конечный пользователь) может ее модифицировать.

Если это тот вид работы, на который вы хотели бы потратить свое время, затем пойдите для этого.

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

его просто грубо описывается как огонь и вода, и на этом осталось (из моих исследований).

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

+0

Очень хорошее объяснение и ссылка. –

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