Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

PHP и разные виды NoSQL

Anna | 29.05.2014 | нет комментариев

В последнее время набирают знаменитость разные NoSQL базы данных. Эта статья начиналась как постижение особенностейграфитовой графовой базы данных Neo4j. Но, в процессе подбора информации, мне захотелось классифицировать информацию о NoSQL решениях и о графовых базах данных, в частности.
В ходе этого небольшого изыскания, были выбраны для подробного рассмотрения СУБД, удачно использующиеся в области Web. И, от того что в тегах присутствует «PHP», я выбирал СУБД, которые теснее дозволено применять с этим языком.

Статья получилась объемной, для комфорта навигации предлагаю воспользоваться содержанием:

  1. Виды NoSQL
  2. Key-value stores
  3. Bigtable stores
  4. Graph Stores
  5. Document Stores
  6. Некоторые итоги

Виды NoSQL


Все NoSQL СУБД разделяются на несколько категорий:

  • Key-value stores / Хранилища типа «ключ-значение»
  • Column Family (Bigtable) stores / Масштабируемые распределенные хранилища
  • Graph Stores / Графовые СУБД
  • Document Stores / Документо-ориентированнаые СУБД

Ниже на рисунке схематично обозначены объемы используемых данных и трудность этих данных в этих видах NoSQL

В всяком разделе я усердствовал располагать СУБД в порядке увеличения функциональности. Допустимо, получилось несколько субъективно.

Существуют базы данных, объединяющие в себе несколько категорий, скажем, OrientDB. Согласно официальному изложению по ссылке выше, она единовременно и графовая, и документо-ориентированная. Изредка её относят даже к Key-value stores и Column Family stores. Подробнее о ней позднее в разделе графовых СУБД.

Разглядим подорбнее всякую категорию:

Key-value stores / Хранилища типа «ключ-значение»


Key-value stores — то самое направление, в котором NoSQL решения показывают свое преимущество над SQL.
И многие считают именно это направление особенно актуальным в краткосрочной и долгосрочной перспективе.
Вот, скажем, создатель MySQL, Майклом Видениусом, так считает.
Key-value NoSQL дюже знамениты и они стремительно и отлично прогрессируют, видимо, из-за большого их числа и мощной соперничества. Наибольшее число NoSQL баз данных, которые были изучены в процессе написания статьи, относились именно к key-value stores.

На прогре есть статья по поводу key-value хранилищ для PHP, с которой я не во каждому согласен. Всеобщий выбор представленных в ней хранилищ (Voldemort, Scalaris, MemcacheDB, ThruDB, CouchDB ) мне показался теснее не так востребованным через примерно пять лет, которые прошли с момента публикации статьи. А описанная там CouchDB — вовсе не key-value хранилище, а документо-ориентированная СУБД (см. секцию про документо-ориентированные СУБД).

MemcacheDB


Изложение: тот же memcached, только с бэкграундом в виде BerkeleyDB.
Продуктивность: разработчиками представлены итоги тестов, по итогам которых средняя продуктивность в одном потоке составляет 18868 w/s (операций записи в секунду) и 44444 r/s (операций чтения в секунду). Тестировали на сервере Dell 2950III, тот, что даже в самой слабой комплектации представляет собой нехилыйагрегат.
Установка: все собрать из исходников. В PHP пользуемся обыкновенным Memcached из PECL.
ЛиценцияBSD-like License — применение даром для торговых и некоммерческих планов.

Redis


Изложение: На прогре есть вводная статья с блэкджеком бенчмарком и ссылками. Присутствуют транзакции (прогростатья о них) и репликации. На подходе версия 3.0, в которой появится Redis-Cluster и существенное увеличение быстродействия. Есть славный интерактивный обучатор.
Продуктивность: ~110.000 w/s, ~81.000 r/s на среднем железе.
Установка: сам Redis и заказчик для PHP рекомендуют собрать из исходников. Заказчиков существует много (список), от себя рекомендовал бы phpredis за отменное изложение и поддержку каждого (либо примерно каждого) присутствующего функционала Redis.
ЛиценцияBSD license — все даром, но если что-то сломалось, то никаких жалоб к разработчикам.

Tarantool


Изложение: In-memory хранилище. Противопоставляется Redis, от которого отличается, по словам разработчиков, увеличенным быстродействием, вследствие тому, что все данные находятся в памяти. Есть встроенный механизм очередей. Есть отличная прогростатья, описывающая основные вероятности.
Установка: на Ubuntu ставится с поддержкой apt-get и капельки волшебства (официальная страница), заказчик для PHP собираем из исходников (github)
Продуктивность: на ярусе с Redis, итоги тестов двойственные: Tarantool стремительней Redis у своего разработчикаTarantool на ярусе с Redis у обыкновенного человека
ЛиценцияSimplified BSD — все даром.

Riak


Изложение: база данных с мощным упором на отказоустойчивость и распределенность. Упор данный настоль крепок, что компания-разработчик рекомендует выделить под Riak не менее пяти серверов для того, Дабы иметь вероятность оценить его способности. На 1-й взор — это key-value хранилище, но в нем присутствует поиск по каждому полям, вторичные ключи, MapReduce. Транзакции отсутствуют. Подробная и обстоятельнаяпрогростатья.
Установкамного методов вплотную до установки из пакетов для Debian/Ubuntu. Для PHP есть PECL пакет, а так же формальный PHP-client.
Продуктивность: ей уделено не самое значимое место, но есть упоминания о 2.500 операций в секунду.
ЛиценцияApache 2 License — даром для примитивных людей, но для торгового применения цены за одну копию Riak Enterprise начинаются от $2,800/год.

Aerospike


Изложение: масштабируемое хранилище для больших объемов данных с минимальной задержкой (latency). Транзакции по умолчанию, поддержке ACID выделена отдельная страница. В версии 3 возникли вторичные индексы. Впечатляет число собственных спецтехнологий масштабирования, репликации и кластеризации (ссылка). Для себя эту систему запомнил как сильный индустриальный Memcached.
Установка: Aerospike устанавливается из дистрибутива, формальный заказчик для PHP существует только для Aerospike2, собирается из исходников.
Продуктивность: заявлена скорость от 180,000 до 400,000 операций в секунду с задержкой в микросекунды (источник).
Лиценция:

  • Community Edition — безвозмездный вариант с ограничениями: максимум два сервера по 200Гб данных на всяком;
  • Enterprise Edition — триал 30 дней, никаких ограничений. По слухам, стоимость составляет от $50.000 за датацентр.

FoundationDB


Изложение: позиционируется как комплексное и максимально примитивное в установке и настройке решение. Легкая масштабируемость, легкое управление — ключевые слова, которые цепляют. Пользователям предлагают «бескомпромисные ACID транзакции». Вероятность применять разные модели данных — key/value, document и даже SQL. Эта СУБД показалась мне исключительно увлекательной, когда прочитал про ее продуктивность.
Продуктивность3,750,000 r/s**Чтение рандомных записей из оперативной памяти(кэша). На официальном сайте в разделе performance есть много увлекательных тестов, самый «неторопливый» из которых показывает итог ~235,000 операций в секунду (50/50 операций чтения и записи). Задержка чтения менее 2ms, задержка коммита менее 15ms. Итоги получены на кластере из 24 машин, в всякой по 16Gb RAM, 2x200Gb SSD, тестовая база состояла из 2млн key-value записей, все операции были транзакционными с максимальным ярусом изоляции и тройной репликацией.
Установка: и здесь все легко: DEB-пакет для Ubuntu, PEAR-пакет для PHP.
Лиценция:

  • Community License — бесплатное применение. Никаких ограничений при разработке и тестировании, но максимум 6 запущенных процессов на production, т.е. по одному процессу на шести серверах, по два на 3 и т.д.;
  • Enterprise License — без ограничений, от $99 до $199, в зависимости от качества поддержки.

Некоторые увлекательные планы не были включены в данный список из-за отсутствия поддержки PHP. Так же не были включены планы VoldemortScalarisThruDB. Из-за слабой продуктивности, либо скуy, cassandra-pdo). Конечный вариант показался мне особенно славным.
Продуктивность: отличные сравнительные тесты с графиками, по итогам которых, на 8 серверах при соотношении 50/50 операций чтения/записи Cassandra делает около 9.000 операций в секунду. HBase делает около 2.500 при тех же условиях.
ЛиценцияApache License 2.0 — применения в всяких целях даром.

Существуют другие BigTable решения, скажем, StratosphereHPCCClouderaCloudata. Они не рассмотрены детально по различным причинам, скажем: неимение поддержки PHP, низкая распространенность, плохая документация.

Graph Stores / Графовые СУБД

Именно ради них и затевалась эта статья. Незадолго я открыл для себя графовые NoSQL как новейший вариант конструкции хранения данных и был много обрадован, потому как в ряде планов базовый функционал графовых СУБД доводилось реализовывать с поддержкой не самых примитивных запросов к MySQL.

В графовой СУБД конструкция хранимых данных может выглядеть приблизительно так:


Если внести в графовую СУБД все фильмы и связать с всяким снимавшихся в нем артистов, дозволено легко обнаружить

фильмы, 
в которых снимались артисты, 
которые когда-либо снимались с артистами из Матрицы, 
и никогда не снимались с артистами из Пиратов Карибского Моря

Neo4j


Изложение: особенно удачная и востребованная разработка в области графовых СУБД. Она всецело поддерживает ACID. Легко устанавливается и без специальных усилий масштабируется. У нее теснее произошло развитое комьюнити, по большинству возникающих вопросов дозволено стремительно обнаружить результаты. О ее вероятностях в связке с PHP дозволено прочитать в этой статье.
Установка: ставится из своего репозитория, для PHP применяется заказчик Neo4jPHP
Продуктивность: ввиду специальной специфики, мне показалось необычным приводить определенные показатели скорости чтения/записи. Она разрешает предпочесть трудно связанные данные и делает это в разы стремительней, чем реляционные СУБД.
Лиценция:

  • Community Edition — GPL-licensed open source, бесплатное применение
  • Commercial Subscription — имеем высокопроизводительный кэш, расширенные вероятности горизонтального масштабирования, поддержку и еще некоторые плюшки. Стоимость варьируется от $0(если вы — стартап из 3 человек с годовым циклом плана менее $100.000) до бесконечности(для дюже крупных компаний)


В этом разделе я описал только одну СУБД, а ее особенно увлекательный соперник, OrientDB, находится ниже. Как оказалось, существует на так много графовых СУБД для Web и для PHP в частности.
Есть еще Titan, тот, что в качестве back-end использует HBase, BerkleyDB либо Cassandra. Информации по его этому чуду не дюже много, о методах подружить его с PHP еще поменьше.
Стоит припомнить и о FlockDB от Twitter, тот, что дозволено подключить к php c поддержкой заказчика, работающего на базе Thirt. Но, вновь же, связи с небольшим числом информации об этой СУБД, трудно составить о ней полное и объективное суждение.

Document Stores / Документо-ориентированнаые хранилища


В этом разделе разглядим документо-ориентированные хранилища — СУБД для иерархических конструкций данных. Эти хранилища универсальны: они владеют высокой скоростью чтения/записи, имеют эластичный подход к форматам хранимых данных, легко работают с неструктурированными данными и предоставляют широкие вероятности для масштабирования.

MongoDB


Изложение: вероятно, самая знаменитая документо-ориентированная NoSQL СУБД. Данные хранятся в формате JSON/BSON. Отменное масштабирование, репликации, индексы, Map-Reduce. Транзакции представлены в виде compare-and-swap.
Установка: MongoDB из репозитория, php-client из PECL.
Продуктивность: чуть выше были сравнительные тесты, в которых были итоги и по MongoDB.
ЛиценцияGNU AGPL — open source, применение даром.

CouchDB


Изложение: разработка от Apache. Во многом схожа на MongoDB. Отличается отсутствием блокировки при операциях чтения, и больше трудной в настройке спецтехнологией шардинга.
Установка: CouchDB из репозитория, для php заказчика есть несколько вариантов(PHPillow, PHP Object Freezer, PHP-on-Couch, растяжение из PECL).
Продуктивность: по итогам одного теста, она приметно неторопливей MongoDB
ЛиценцияApache 2.0 — применение даром.

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

OrientDB


Изложение: документ-ориентированная и, в то же время, графовая CУБД.

Её ближайший соперник как документ-ориентированной — MongoDB. Этому сопоставлению посвященаотдельная страница.
Основные превосходства OrientDB:

  • полная помощь ACID
  • вероятность применять внешние ключи в документах(так же, как в реляционных СУБД)
  • три типа используемых индексов (SB-Tree, Hash, MVRB-Tree) вопреки B-Tree в MongoDB
  • огромная продуктивность(OrientDB исполняет 150.000 w/s на обыкновенном железе)
  • примитивный язык запросов, схожий с SQL

Отдельно хочу подметить язык запросов, сравните, как выглядят одинаковые update-запросы:

  • MongoDB
    db.product.update( { “stock.qty”: { $gt: 2 } }, { $set: { price: 9.99 } } )
    
  • OrientDB
    UPDATE product SET price = 9.99 WHERE stock.qty > 2
    

Стержневой ее соперник как графовой — Neo4j. И должен сказать, что освоить графовые вероятности в OrientDB куда труднее, чем в Neo4j. Первые представления об этом дозволено получить в этой статье.
Установка: с установкой необходимо немножко поколдовать, вот есть абсолютно рабочий мануал, а в качестве PHP-заказчика рекомендована эта библиотека.
Продуктивность: обещают 150.000 w/s, также есть cравнение графовых СУБД
Лиценция:

  • Community Edition — Apache 2 license open source, бесплатное применение для всяких целей, включая торговое
  • Enterprise Edition — расширенная помощь и такие плюшки как Query Profiler, Metrics recording, Live Monitor with configurable alerts за ть всякой из них отдельную статью.

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

    image

Источник: programmingmaster.ru

 

 

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB