Подтвердить что ты не робот

Что делает Cassandra (и NoSQL в целом) лучшим решением для РСУБД?

Ну, NoSQL - это модное слово, поэтому я изучал его. Мне еще предстоит разобраться в ColumnFamilies и SuperColumns и т.д. Но я смотрю, как отображаются данные.

После чтения этой статьи и других, кажется, данные отображаются в формате JSON.

Users = {
    1: {
        username: "dave",
        password: "blahblah",
        dateReged: "1/1/1"
    },
    2: {
        username: "etc",
        password: "blahblah",
        dateReged: "2/1/1",
        comment: "this guy has a comment and dave doesns't"
    },
}

Формат RDBMS:

Table name: "Users"

id | username | password | dateReged | comment
---+----------+----------+-----------+--------
 1 |  dave    | blahblah |  1/1/1    |
---+----------+----------+-----------+--------
 2 |  etc     | blahblah |  2/1/1    | this guy has a comment and dave doesn't

Предполагая, что я правильно это понимаю, и мои приведенные выше примеры верны, почему я должен выбрать дизайн RDBMS над проектом NoSQL? Лично я бы скорее работал с структурой JSON... Означает ли это, что я должен выбрать NoSQL, скажем, MySQL?

Я предполагаю, что я спрашиваю, "когда я должен выбрать NoSQL для РСУБД?"

На стороне примечания, как я уже сказал, я до сих пор не совсем понимаю, как начать реализацию базы данных Cassandra. То есть, как создать таблицу выше пользователей в новой базе данных? Любые учебники, документация и т.д., На которые вы могли бы указать, были бы замечательными. Мой google'ing не очень сильно изменился с точки зрения "с нуля"...

4b9b3361

Ответ 1

Основным преимуществом NoSQL является масштабируемость по горизонтали и распределенное хранилище. Это означает, что вы можете иметь большое количество "узлов кластера" и записывать их параллельно. Кластер гарантирует, что изменения будут распространены на другие узлы кластера в конечном итоге (возможная согласованность).

NoSQL - это не столько SQL (этот термин означает "не только SQL" ). Фактически, некоторые продукты NoSQL поддерживают подмножество SQL. Причина, по которой формат данных отличается (JSON или список пар свойств/значений по сравнению с табличными данными): внутри реляционных баз данных количество столбцов (и имен столбцов) определено в центральном месте, что плохо работает с горизонтальным (вам нужно будет остановить все узлы кластера для изменений схемы). Кроме того, объединения не поддерживаются так сильно, потому что это приведет к нарушению горизонтальной масштабируемости (данные из нескольких узлов кластера, возможно, будут прочитаны, если данные будут распределены).

Ответ 2

Если вы google, то вы можете быть в положении, когда NoSQL будет проще для вас, чем для РСУБД. Поскольку вы не являетесь, многие преимущества, которые дает RDBMS, вероятно, будут полезны. Примечательно, что на одном node NoSQL не имеет абсолютно никаких преимуществ перед RDBMS. Однако RDBMSes предлагают множество преимуществ перед NoSQL. что они?

RDBMSs используют некоторую довольно глубокую магию для понимания данных, которыми она владеет, и данных, которые вы запрашиваете, таким образом, чтобы они могли возвращать эти данные наиболее эффективным образом. Если вы не спросили о какой-либо колонке, rdbms не тратит на нее никаких усилий. Если вас интересуют строки, которые имеют общие поля в двух таблицах (это соединение, битка), RDBMS не нужно проверять каждую пару строк для совпадений, или то, что обычно делает dll NoSQL, просто дает вы все и заставляете вас делать проверку. с помощью СУБД вы обычно можете создавать запросы, которые фактически "об" используются вами, например "если дата является вторником", и если ваши индексы поддерживают ее (если вы делаете этот запрос, то вы добавите такой index) вы можете эффективно получить эти строки.

Есть еще одна причина, по которой RDBMSs хороши. Сделки легко выполняются на RDBMS, но гораздо труднее получить доступ к базам данных NoSQL. Предположим, вы внедряете механизм ведения блога. Предположим, что заголовок сообщения (который появляется в URL-адресе) должен быть уникальным во всех сообщениях. В СУБД вы можете легко убедиться, что вы случайно не ошибетесь. С базой данных NoSQL, если она поддерживает какую-то целостность транзакций, она обычно находится на уровне обломочности, и все, что может потребовать такой целостности, должно быть на одном уровне. так как любая пара пользователей может размещать сообщения в тот же момент, то каждый пользователь должен быть на одном осколке, чтобы получить тот же эффект. Ну, тогда вы не получите никакой пользы от NoSQL.

Ответ 3

Базы данных NoSQl подходят для некоторых веб-сайтов, где вам не нужна транзакция или согласованность, где все, что вы делаете, представляет некоторые данные (но пока вы не будете действительно действительно большими, они действительно не нужны).

Но если вам необходимо обеспечить соблюдение финансовых правил (или других сложных правил целостности данных) или внутренних элементов управления или отчетов и агрегирования данных для отчетности, вам нужна СУБД. Я буду держать пари даже, что Google использует РСУБД для собственных HR и финансовых данных и т.д.

Для некоторых веб-приложений вам может понадобиться сочетание как базы данных nosql для некоторых типов информации, так и транзакционной реляционной базы данных для заказов и других вещей, в которых необходима последовательность транзакций.

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

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

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

Ответ 4

Я предполагаю, что я спрашиваю, "когда я должен выбрать NoSQL для РСУБД?"

[Предостережение: я никогда не читал о NoSQL до]

Согласно Wikipedia, NoSQL не подходит для соединений: это означает (для меня) отсутствие ссылочной целостности и нормализации.

Ответ 5

Преимущество NoSql заключается в том, что его проще, и если у вас есть ваши мигающие ОО, он заполняет все ваши потребности в персистентности.

Преимущество базы данных, основанной на SQL, заключается в том, что вы можете легко повторно использовать и расширять свои данные способами, которые не были предусмотрены в оригинальном дизайне. Кроме того, базы данных "Объект" имеют тенденцию работать очень плохо (даже если это возможно), когда вы хотите сделать эквивалент агрегированных запросов SQL, таких как COUNT, SUM, AVG.

Googles BIGTABLE, которая является самой большой базой данных OO в любом месте (и, возможно, самым большим периодом базы данных), также поддерживает SQL и SQL-функции, такие как индексирование и сильная типизация.

Ответ 6

RDBMS '- все о согласованности. Они отлично справляются с данными, которые сильно перегружены транзакциями. См. Также ACID (атомарность, консистенция, изоляция, долговечность). Иногда вам не нужно все это, например, при хранении данных из журналов или работе с данными, которые не будут меняться, просто накапливаются.

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

Ответ 7

Ответ прост. Если вам требуется хранение данных - используйте NoSQL, если вам нужно больше функций, а просто хранить данные - используйте СУРБД.

Ответ 8

Самый простой ответ, который я могу придумать: Когда ваши данные не соответствуют реляционной модели.

Ответ 10

Кассандра сама по себе не лучше РСУБД. Лучше при некоторых обстоятельствах. СУРБД значительно превосходит обработку транзакций, управление основными данными, справочные данные, хранилище данных и (некоторые формы) BI.

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

NOSQL не выполняет объединения по нескольким причинам: вы уже присоединились к данным перед загрузкой файла NOSQL, поэтому нет необходимости; потому что распределенное соединение по далеко идущим серверам будет ресурсоемким. Первая причина, приведенная выше, проста: вы вложили все данные в единую структуру. Если вы не вставляете данные и не должны связываться, не ожидайте отличной производительности. Связывание - это эвфемизм для присоединенного приложения, не использующего консолидацию данных в качестве соединения. Предполагая, что хеширование ключа является методом распределения данных, разные записи, имеющие один и тот же ключ хеширования, будут размещены. Таким образом, если присоединение было разрешено, все объединенные данные будут на одном сервере.

Это не просто черно-белое.

Ответ 11

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

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

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

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

Для Кассандры есть полное и бесплатное обучение в https://academy.datastax.com

Там вы найдете не только тренировки для установки и настройки Cassandra, но и для использования ее инструментов. Он даже дает вам сертификаты о завершении.

Datastax имеет собственное распределение Cassandra, но он следует всем тем же рекомендациям, что и проект Apache; он предлагает несколько дополнительных инструментов.