Tarantool vs Couchbase

На данной странице собраны факты в следствии работы с двумя бд.

Особенности

Следующую информацию нельзя ассоциировать с плюсами или минусам, но о ней нужно знать.

 TarantoolCouchbase

 

Подход создания индекса

Общепринятый подход создания индексовЧтобы создать индекс, нужно сначала создать DesignDoc, и уже в нем создать view (индекс)
Логика индексаТупые индексыИндексы тут создаются на основании логики описанной вами и несут не просто перечисляемую функцию, но и некоторую смысловую. Например в индекс можно включить пользователей у которых длинна email больше n символов, или присутствуют только определенные поля.
Подход обновления индексаОбновление индекса автоматически при внесении изменений в бдОбновление индекса происходит либо по требованию (при запросе на получение данных), либо автоматически, когда фрагментация базы данных достигает определенного процента (заданного в настройках Bucket). Этот момент тоже нужно учитывать при разработке. Допустим у нас есть необходимость проверить на уникальность имени пользователя перед выполнением какой либо операции. Например при регистрации пользователя. Естественно мы выполним запрос к этому view и будем анализировать ответ базы данных. Однако существует вероятность того, что в этот же самый момент только что зарегистрировался пользователь с таким же именем, а индекс еще не успел перестроиться. Естественно нам придет информация что в индексе такой записи нет и мы получим некоторую коллизию. Дабы избежать такой ситуации, есть возможность, при вызове view индекса, указать ему необходимость перестроения индекса. Т.е. все операции, которые не были выполнены по данному индексу, сначала будут завершены, а после чего уже будет выполнен запрос и возвращен результат.
Индекс на 1 поледада
Индекс составной / compositeдада
Индекс покрывающий / covering да
Индекс уникальный / uniqueданет, и unique constraint тоже нет, но есть решения:
1. сохранять уникальное значение в PK отдельную таблицу (PK уникальный)
2. др
Выборка некоторых полей, например SELECT name FROM tда 
Выборка по условиям, например SELECT * FROM t WHERE id IN (1,2)да 
joins таблицдада
subqueriesда 
Строгая типизация данныхда 
nullable значенияда 

SQL-группировка с функциями агрегации:

SELECT column2, SUM(column4), COUNT(column4), AVG(column4)
FROM table2
GROUP BY column2

дада
Отличный туллингдада
Датамаппер на PHP (сущности)да 
Отличная документациядада
Отличная поддержка в комьюнитида 
Весь выше перечисленный функционал работает при хранении данных в памятида 

 

Минусы NoSQL-СУБД

  1. сложность поддержки ненормализованных данных
  2. трудоемкость создания сложных запросов, отсутствие JOIN-соединений и, как следствие, большой объем ручного программирования
  3. нестандартность, слабая интеграция; нету единого языка запросов типа SQL, каждую NoSQL-СУБД надо изучать с нуля

Понять мощь Тарантула помогут 2 статьи:
https://www.tarantool.io/ru/doc/latest/tutorials/sql_tutorial/
https://www.tarantool.io/ru/doc/2.3/reference/reference_sql/sql/

Источник: 1


27.05.2008 19:48

Комментарии

Комментариев пока нет.


Copyrights © 2007 - 2026 YaPro.Ru