Когда использовать CouchDB по сравнению с [закрытым] RDBMS

Вы не можете сделать, это непосредственно - UITextField не имеет никакого атрибут maxLength, но можно установить эти UITextField's делегат, затем использовать:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
63
задан Andrew Whitehouse 20 August 2009 в 15:47
поделиться

7 ответов

CouchDB - одно из нескольких доступных «хранилищ ключей / значений», другие включают старые, такие как BDB , веб-ориентированные, такие как Persevere , MongoDB и CouchDB, новые сверхбыстрые, такие как memcached (только RAM) и Tokyo Cabinet , а также огромные магазины, такие как Hadoop и Google BigTable (MongoDB также утверждает, что находится на этом пространстве).

Конечно, есть место как для хранилищ ключей / значений, так и для реляционных БД. Традиционно большинство RDB считается уровнем выше ключа / значения. Например, MySQL использовал BDB как дополнительный сервер для таблиц. Короче говоря, пары "ключ-значение" ничего не знают о полях и отношениях, которые являются основой SQL.

Хранилища ключей / значений обычно легче масштабировать, что делает их привлекательным выбором при быстром росте, как это сделал Twitter. Конечно, это означает, что любые отношения между сохраненными значениями должны управляться в вашем коде, а не просто объявляться в SQL. Подход CouchDB состоит в том, чтобы хранить большие «документы» в части значений, делая их (в основном) самодостаточными, поэтому вы можете получить большую часть необходимых данных за один запрос. Многие варианты использования соответствуют этой идее, другие нет.

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

13
ответ дан 24 November 2019 в 16:24
поделиться

Пока кто-нибудь не даст более подробный ответ, вот несколько плюсов и минусов для CouchDB

Плюсы:

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

Минусы:

  • вам необходимо создавать представления для каждого запроса, т.е. запросы типа hoc (например, объединение динамических WHERE и SORT в SQL) недоступны.
  • либо у вас будут избыточные данные, либо вы в конечном итоге сами реализуете логику соединения и сортировки на «стороне клиента» (например, сортировка отношение «многие ко многим» в нескольких полях)

За и против:

  • создание ваших представлений не так просто, как в SQL, это больше похоже на решение головоломки. Зависит от вашего типа, за или против :)
26
ответ дан 24 November 2019 в 16:24
поделиться

Если вы работаете с табличными данными, в которых существует только неглубокая иерархия данных, то система РСУБД, вероятно, будет вашим лучшим выбором. Это основное применение систем РСУБД, а документация и поддержка инструментов очень хороши.

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

0
ответ дан 24 November 2019 в 16:24
поделиться

На этот вопрос сложно ответить. Поэтому я постараюсь выделить области, в которых CouchDB может работать против вас.

Двумя самыми большими трудностями в списках рассылки Couch Users и Dev, которые есть у людей, являются:

  • Сложные объединения данных.
  • Множественные. -Step Map / Reduce.

Couch Views - это в значительной степени отдельные острова. Если вам нужно агрегировать / объединить / пересечь набор представлений, вам сейчас в значительной степени придется сделать это на уровне приложения. Есть некоторые уловки, которые вы можете использовать с сопоставлением представлений и сложными ключами, чтобы помочь с объединениями, но они пока идут только для некоторых типов данных. Это может или не может быть пригодным для различных приложений. При этом много раз говорится, что эту проблему можно уменьшить или устранить, по-другому структурируя ваши данные.

Комментарии других людей по этому вопросу демонстрируют некоторые из различных типов данных, которые хорошо подходят для CouchDB.

Еще одна вещь, о которой следует помнить, это то, что в большинстве случаев данные, которые вам может потребоваться объединить / merge / correct - это данные, которые вы в любом случае будете выполнять в базе данных СУБД в автономном режиме, поэтому вы ничего не потеряете, сделав то же самое в CouchDB.

Краткий ответ: я думаю, что в конечном итоге CouchDB сможет справиться с любой проблемой, которую вы хочу бросить на это. Но уровень комфорта, который вы используете, может отличаться от разработчика к разработчику. Я думаю, это несколько субъективно. Мне нравится использовать полный язык Тьюринга для запроса моих данных и сохранять больше логики на уровне приложения. Ваш пробег может отличаться.

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

Краткий ответ: я думаю, что в конечном итоге CouchDB сможет справиться с любыми проблемами, с которыми вы хотите столкнуться. Но уровень комфорта, который вы используете, может отличаться от разработчика к разработчику. Я думаю, это несколько субъективно. Мне нравится использовать полный язык Тьюринга для запроса моих данных и сохранять больше логики на уровне приложения. Ваш пробег может отличаться.

Еще одна вещь, которую следует иметь в виду, это то, что в большинстве случаев данные, которые вам могут понадобиться для объединения / слияния / пересечения, будут данными, которые вы все равно будете делать в автономном режиме в базе данных РСУБД, поэтому вы можете ничего не потерять, сделав то же самое. в CouchDB.

Краткий ответ: я думаю, что в конечном итоге CouchDB сможет справиться с любыми проблемами, с которыми вы хотите столкнуться. Но уровень комфорта, который вы используете, может отличаться от разработчика к разработчику. Я думаю, это несколько субъективно. Мне нравится использовать полный язык Тьюринга для запроса моих данных и сохранять больше логики на уровне приложения. Ваш пробег может отличаться.

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

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

7
ответ дан 24 November 2019 в 16:24
поделиться

Поправьте меня, если я ошибаюсь. Couchdb бесполезен в тех случаях, когда вам нужно проверить уникальность документов по нескольким полям. Например, невозможно обеспечить соблюдение правила проверки типа «и логин, и адрес электронной почты должны быть уникальными» и сохранять данные в согласованном состоянии. Вы можете проверить это перед сохранением документа, но кто-то может нажать перед вами, и данные станут несовместимыми.

2
ответ дан 24 November 2019 в 16:24
поделиться

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

3
ответ дан 24 November 2019 в 16:24
поделиться

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

Ключевые моменты:

  • Мы накопили, вероятно, 30 лет знаний об администрировании реляционных баз данных, поэтому не следует заменять их без внимательного рассмотрения; нереляционные хранилища данных менее развиты, чем реляционные, и поэтому их внедрение более рискованно
  • Существуют разные типы нереляционных хранилищ данных; некоторые представляют собой хранилища "ключ-значение", некоторые - хранилища документов, некоторые - графические базы данных
  • . Вы можете использовать гибридный подход, например комбинация СУБД и графического хранилища данных для сайта социального программного обеспечения
  • Хранилища данных документов (например, CouchDB и MongoDB), вероятно, наиболее близки к реляционным базам данных и предоставляют структуру данных JSON со всеми полями, представленными иерархически, что позволяет избежать необходимости делать таблицы объединяется, и (некоторые могут возразить) является улучшением традиционного объектно-реляционного сопоставления, которое в настоящее время использует большинство приложений
  • . Нереляционные базы данных поддерживают репликацию (включая мастер-мастер); реляционные базы данных тоже поддерживают репликацию, но она может быть не такой всеобъемлющей, как нереляционный вариант
  • . Очень большие сайты, такие как Twitter, Digg и Facebook, используют Cassandra, которая построена с нуля для поддержки кластеризации
  • . вероятно, подходит для 90% случаев

В целом, консенсус выглядит как «действовать с осторожностью».

45
ответ дан 24 November 2019 в 16:24
поделиться
Другие вопросы по тегам:

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