Что использует база данных Google?

Я думаю, что если кто-то захочет использовать PHP и MySQL или какой-нибудь другой сервер базы данных:

  1. Подумайте об обучении PDO (объекты данных PHP) - это база данных уровень доступа, обеспечивающий единый метод доступа к нескольким базам данных.
  2. Подумайте об обучении MySQLi
  3. Используйте собственные функции PHP, такие как: strip_tags , mysql_real_escape_string или если переменная числовая, просто (int)$foo. Подробнее о типах переменных в PHP читайте здесь . Если вы используете библиотеки, такие как PDO или MySQLi, всегда используйте PDO :: quote () и mysqli_real_escape_string () .

Примеры библиотек:

---- PDO

----- Никакие заполнители - не спешили для SQL-инъекций! Это плохо

$request = $pdoConnection->("INSERT INTO parents (name, addr, city) values ($name, $addr, $city)");

----- Без имени заполнители

$request = $pdoConnection->("INSERT INTO parents (name, addr, city) values (?, ?, ?);

----- Именованные заполнители

$request = $pdoConnection->("INSERT INTO parents (name, addr, city) value (:name, :addr, :city)");

--- MySQLi

$request = $mysqliConnection->prepare('
       SELECT * FROM trainers
       WHERE name = ?
       AND email = ?
       AND last_login > ?');

    $query->bind_param('first_param', 'second_param', $mail, time() - 3600);
    $query->execute();

PS:

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

. Но хотя PDO и MySQLi довольно быстры, MySQLi выполняет незначительную скорость в тестах - ~ 2,5% для незаготовленных отчетов и ~ 6,5% для подготовленных.

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

365
задан Dan McGrath 2 September 2016 в 12:52
поделиться

5 ответов

Bigtable

А Распределенная Система хранения для Структурированных данных

Bigtable является распределенной системой хранения (созданный Google) для управления структурированными данными, которые разработаны для масштабирования к очень большому размеру: петабайты данных через тысячи товарных серверов.

Много проектов в Google хранят данные в Bigtable, включая индексацию в поисковых системах, Google Earth и Google Finance. Эти приложения помещают совсем другие требования на Bigtable, обоих с точки зрения размера данных (от URL до веб-страниц к спутниковым снимкам) и требования задержки (от объема бэкенда, обрабатывающего к обслуживанию данных реального времени).

Несмотря на эти варьировался требования, Bigtable успешно предоставил гибкое, высокоэффективное решение для всех этих продуктов Google.

функции Some

  • быстрый и чрезвычайно крупномасштабный DBMS
  • редкая, распределенная многомерная отсортированная карта, совместно используя характеристики и ориентированного на строку и ориентированные на столбец базы данных.
  • разработанный для масштабирования в диапазон петабайта
  • это работает через сотни или тысячи машин
  • , легко добавить больше машин к системе и автоматически начать использовать в своих интересах те ресурсы без любого реконфигурирования
  • , каждая таблица имеет несколько размеров (один из которых является полем в течение времени, позволяя управление версиями)
  • таблицы оптимизированы для GFS (Google File System), будучи разделенным на несколько планшетов - сегменты таблицы, как разделено вдоль строки, выбранной таким образом, что планшет составит ~200 мегабайтов в размере.

Архитектура

BigTable не является реляционной базой данных. Это не поддерживает соединения, и при этом это не поддерживает богатый подобный SQL-з¦прос¦м. Каждая таблица является многомерной редкой картой. Таблицы состоят из строк и столбцов, и каждая ячейка имеет метку времени. Может быть несколько версий ячейки с различными метками времени. Метка времени допускает операции, такие как "выбор 'n' версии этой Веб-страницы", или "удаляют ячейки, которые являются более старыми, чем определенная дата/время".

для управления огромными таблицами, Bigtable разделяет таблицы на границах строки и сохраняет их как планшеты. Планшет составляет приблизительно 200 МБ, и каждая машина сохраняет приблизительно 100 планшетов. Эта установка позволяет планшетам от единственной таблицы быть распространенными среди многих серверов. Это также допускает мелкомодульное выравнивание нагрузки. Если одна таблица получает много запросов, она может потерять другие планшеты или переместить занятую таблицу в другую машину, которая не так занята. Кроме того, если машина понижается, планшет может быть распространен через многие другие серверы так, чтобы влияние производительности на любую данную машину было минимально.

Таблицы хранятся как неизменный SSTables и хвост журналов (один журнал на машину). Когда машина разряжает системную память, она сжимает некоторый Google использования планшетов собственные методы сжатия (BMDiff и Быстрый). Незначительные уплотнения включают только несколько планшетов, в то время как основные уплотнения включают целую систему таблицы и восстанавливают место на жестком диске.

местоположения планшетов Bigtable хранятся в ячейках. Поиск какого-то конкретного планшета обрабатывается трехмногоуровневой системой. Клиенты понимают мысль к таблице META0, которой существует только один. Таблица META0 отслеживает много планшетов META1, которые содержат местоположения искавших планшетов. И META0 и META1 делают интенсивное использование из упреждающей выборки и кэширования для уменьшения узких мест в системе.

Реализация

BigTable основан Google File System (GFS), который используется в качестве запоминающего устройства для файлов журнала и файлов данных. GFS обеспечивает надежное хранение для SSTables, собственный Google формат файла раньше сохранял данные таблицы.

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

существует три основных типы сервера из интереса к системе Bigtable:

  1. Главные серверы: присвойте планшеты серверам планшета, отслеживает то, где планшеты расположены, и перераспределяет задачи по мере необходимости.
  2. серверы планшета: обработайте запросы чтения-записи для планшетов и разделите планшеты, когда они превысят пределы размера (обычно 100 МБ - 200 МБ). Если сервер планшета перестал работать, то 100 планшетов серверы каждая погрузка 1 новый планшет и система восстанавливаются.
  3. серверы Блокировки: экземпляры Полного распределенного сервиса блокировки. Много действий в BigTable требует приобретения блокировок включая вводные планшеты для записи, гарантируя, что существует не больше, чем одно активное Ведущее устройство за один раз и проверка управления доступом.

Пример от научно-исследовательской работы Google:

alt text

часть А таблицы в качестве примера, которая хранит Веб-страницы. Название строки инвертированный URL. Семейство столбца содержания содержит содержание страницы , и семейство столбца привязки содержит текст любых привязок та ссылка страница. На домашнюю страницу CNN ссылаются и Sports Illustrated и домашними страницами МОЕГО-взгляда, таким образом, строка содержит столбцы, названные anchor:cnnsi.com и anchor:my.look.ca. Каждая базовая ячейка имеет одна версия ; столбец содержания имеет три версии , в метках времени t3, t5, и t6.

API

Типичные операции к BigTable являются созданием и удалением таблиц и семейств столбца, пишущий данные и удаляя столбцы из строки. BigTable обеспечивает, это функционирует разработчикам приложений в API. Транзакции поддерживаются на уровне строки, но не через несколько ключей строки.

<час>

Вот эти ссылка на PDF научно-исследовательской работы .

И здесь можно найти Google показа видео Jeff Dean в лекции в Вашингтонском университете , обсудив систему хранения содержания Bigtable, используемую в бэкенде Google.

573
ответ дан 12 revs, 4 users 97% 23 November 2019 в 00:09
поделиться

Это - что-то, что они создали сами - это назвало Bigtable.

http://en.wikipedia.org/wiki/BigTable

существует статья Google на базе данных:

http://research.google.com/archive/bigtable.html

50
ответ дан Elmo 23 November 2019 в 00:09
поделиться

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

у людей Apache есть реализация идей, представленных в этих газетах, названных HBase. HBase является частью большего проекта Hadoop, который согласно их сайту "является программной платформой, которая позволяет тому легко записать и запустить приложения, которые обрабатывают огромное количество данных". Некоторые сравнительные тесты являются довольно впечатляющими. Их сайт в http://hadoop.apache.org .

19
ответ дан splattne 23 November 2019 в 00:09
поделиться

Хотя Google использует BigTable для всех их главных приложений, они также MySQL использования для другого (возможно, незначительный) приложения.

13
ответ дан Mauricio Scheffer 23 November 2019 в 00:09
поделиться

И, возможно, также удобно знать, что BigTable не является реляционной базой данных (как MySQL), а огромное (распределенное) хэш-таблица , которая имеет совсем другие характеристики. Можно играть вокруг с (ограниченная версия) BigTable сами на платформа Google AppEngine .

Рядом с Hadoop, упомянутым выше существует много других реализаций, которые пытаются решить те же проблемы как BigTable (масштабируемость, доступность). Я видел хорошее сообщение в блоге вчера, перечисляющее большинство из них здесь .

9
ответ дан splattne 23 November 2019 в 00:09
поделиться
Другие вопросы по тегам:

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