Нереляционные базы данных (NoSQL) для малых и средних приложений - PullRequest
8 голосов
/ 01 марта 2010

Преимущества нереляционной базы данных (например, хранения пары ключ-значение) очевидны при использовании в крупномасштабных наборах данных (google, facebook, linkedin). Как вы думаете, как малые и средние приложения могут выиграть от использования нереляционных баз данных?

Ответы [ 7 ]

6 голосов
/ 01 марта 2010

В мейнфреймах IBM с 60-х годов существовали «нереляционные» базы данных (иерархические базы данных, такие как IMS + варианты). Эти базы данных все еще используются, потому что они чрезвычайно быстры и хорошо справляются с огромными масштабами.

Смысл реляционных баз данных состоял в том, чтобы обеспечить регулярный, относительно абстрактный метод хранения и извлечения данных, при котором настройку можно выполнять относительно независимо от модели данных (не относится к IMS). Они были разработаны скорее в ответ на неспособность легко реорганизовать виртуальные базы данных. Плюс хорошая организация; Недостаток - средний, а не высокая производительность.

Google предоставляет масштабируемое хранилище и MapReduce для обработки масштаба. Это не реляционный.

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

Мне кажется, что большая часть практического толчка к нереляционным отношениям направлена ​​на производительность и масштаб. Я не понимаю, как это помогает «маленьким» приложениям.

Люди предложили, но не сделали много практического управления данными, используя схемы, основанные на знаниях. CYC Дуга Лената приходит сюда на ум. Способность базы данных чтобы помочь приложению сделать неочевидные выводы, мне очень интересно «маленькие» приложения, которые пытаются быть «умными». Но их пока немного.

2 голосов
/ 01 марта 2010

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

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

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

Существует дополнительный перечень преимуществ для небольших проектов при рассмотрении службы NoSQL (например, Amazon SimpleDB и Microsoft Azure) по сравнению с продуктом. Если вам нужно только заплатить за то, что вы используете, и вы не используете много, это может быть дешевле, чем запуск выделенного сервера, вплоть до бесплатного за что-то вроде уровня бесплатного использования SimpleDB.

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

1 голос
/ 01 марта 2010

Когда дело доходит до графических баз данных (например, Neo4j - проект, в котором я участвую), они превосходят в масштабировании до сложности . Это означает, что они предоставляют «лучшие субстраты для моделирования бизнес-доменов» (см. Состояние NoSQL , также Бен Скофилд тоже) На мой взгляд, это очень важно для небольших и средних приложений.

Это может быть лучше объяснено с помощью примеров, поэтому вот несколько ссылок на примеры приложений / моделирования домена:

0 голосов
/ 01 ноября 2013

Amazon SimpleDB может быть полезен для тех, кому нужна нереляционная база данных для хранения небольших неструктурных данных. Amazon SimpleDB имеет ограниченный размер хранилища до 10 ГБ на домен. Amazon SimpleDB предлагает простоту и гибкость. SimpleDB автоматически индексирует все данные. Цены на Amazon SimpleDB основаны на фактическом использовании вами коробки. Вы можете хранить любые строковые данные UTF-8 в Amazon SimpleDB.

0 голосов
/ 31 октября 2013

Если вы сопоставите несколько распространенных облачных сервисов PaaS, таких как хранилище Key-Value, хранилище BLOB и хранилище очереди сообщений, у вас есть несколько удобных инструментов, которые могут освободить разработчиков небольших приложений от тирании администратора баз данных и инфраструктуры. .

Сегодня небольшие разработчики часто прибегают к Jet MDB. Зачем? Простой общий доступ так же прост, как и сохранение файла MDB в общей папке, видимой для всего сообщества приложений. Когда они могут сойти с рук (то есть получить необходимую поддержку от привратников), они могут использовать SQL Server Express, MySQL и т. Д.

К сожалению, эти привратники могут быть довольно враждебными в большой организации. Упомяните «базу данных», и внезапно вы столкнетесь с бандой DBA и связанными с ней задержками, обзорами приложений, установлением приоритетов и т. Д. Упомяните, что вам нужен сервер, и вы столкнулись с другой расстрельной командой.

Использование решения NoSQL и связанных с ним облачных сервисов может устранить эту проблему, если вам не нужна СУБД.

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

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

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

Очевидно, что существуют квоты хранилища и ЦП для управления. Никто не может позволить себе продолжать увеличиваться до бесконечности. Мошеннические приложения могут потреблять огромное количество ресурсов. Так что вам нужно что-то вроде системы квот для ограничения использования. Независимо от того, контролируется ли это специалистами по инфраструктуре, это решение по реализации, или оно может рассматриваться как использование общего ресурса: не хватает, и кто-то кричит на программиста, который, в свою очередь, смотрит на него и, если нужно, запрашивает больше (или исправляет свои ошибки).

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

0 голосов
/ 11 сентября 2010

Что ж, одна из проблем с СУБД заключается в том, что вам необходимо приложить усилия для сопоставления моделей доменов ваших языков программирования с реляционной схемой вашей СУБД. Обычно эти усилия затрачиваются на настройку слоя ORM.

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

Еще одним преимуществом является масштабируемость и производительность. Поскольку большую часть времени ваши данные получают ключами, все эффективно использует и индексирует. Тривиальное разбиение возможно, если выполнить% (MOD) для ключа по отношению к числу доступных экземпляров NoSQL, обеспечивающих естественное разбиение данных, что крайне важно для разбиения.

Если вам интересно узнать, чем разработка с использованием NoSQL отличается от СУБД, у меня есть учебное пособие, в котором я показываю, как приступить к разработке простого приложения для блога с использованием Redis .

0 голосов
/ 20 марта 2010

Вопрос, возможно, требует немного больше контекста ... в среде Python рассмотрим учебник по проекту y_serial: http://yserial.sourceforge.net/

NoSQL не просто принят по соображениям масштабируемости. Сериализация (любого произвольного объекта Python) и постоянство очень удобны в любом масштабе - так что рассматривайте систему ключ-значение как один подход.

...