Я думаю, что если кто-то захочет использовать PHP и MySQL или какой-нибудь другой сервер базы данных:
(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% для подготовленных.
И, пожалуйста, проверьте каждый запрос в своей базе данных - это лучший способ предотвратить инъекцию.
А Распределенная Система хранения для Структурированных данных
Bigtable является распределенной системой хранения (созданный Google) для управления структурированными данными, которые разработаны для масштабирования к очень большому размеру: петабайты данных через тысячи товарных серверов.
Много проектов в Google хранят данные в Bigtable, включая индексацию в поисковых системах, Google Earth и Google Finance. Эти приложения помещают совсем другие требования на Bigtable, обоих с точки зрения размера данных (от URL до веб-страниц к спутниковым снимкам) и требования задержки (от объема бэкенда, обрабатывающего к обслуживанию данных реального времени).
Несмотря на эти варьировался требования, Bigtable успешно предоставил гибкое, высокоэффективное решение для всех этих продуктов Google.
функции Some
Архитектура
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:
Пример от научно-исследовательской работы Google:
часть А таблицы в качестве примера, которая хранит Веб-страницы. Название строки инвертированный URL. Семейство столбца содержания содержит содержание страницы , и семейство столбца привязки содержит текст любых привязок та ссылка страница. На домашнюю страницу CNN ссылаются и Sports Illustrated и домашними страницами МОЕГО-взгляда, таким образом, строка содержит столбцы, названные
anchor:cnnsi.com
иanchor:my.look.ca
. Каждая базовая ячейка имеет одна версия ; столбец содержания имеет три версии , в метках времениt3
,t5
, иt6
.
API
Типичные операции к BigTable являются созданием и удалением таблиц и семейств столбца, пишущий данные и удаляя столбцы из строки. BigTable обеспечивает, это функционирует разработчикам приложений в API. Транзакции поддерживаются на уровне строки, но не через несколько ключей строки.
<час>Вот эти ссылка на PDF научно-исследовательской работы .
И здесь можно найти Google показа видео Jeff Dean в лекции в Вашингтонском университете , обсудив систему хранения содержания Bigtable, используемую в бэкенде Google.
Это - что-то, что они создали сами - это назвало Bigtable.
http://en.wikipedia.org/wiki/BigTable
существует статья Google на базе данных:
Как другие упомянули, Google использует решение собственной разработки под названием BigTable, и они выпустили несколько бумаг, описывающих его в реальный мир.
у людей Apache есть реализация идей, представленных в этих газетах, названных HBase. HBase является частью большего проекта Hadoop, который согласно их сайту "является программной платформой, которая позволяет тому легко записать и запустить приложения, которые обрабатывают огромное количество данных". Некоторые сравнительные тесты являются довольно впечатляющими. Их сайт в http://hadoop.apache.org .
Хотя Google использует BigTable для всех их главных приложений, они также MySQL использования для другого (возможно, незначительный) приложения.
И, возможно, также удобно знать, что BigTable не является реляционной базой данных (как MySQL), а огромное (распределенное) хэш-таблица , которая имеет совсем другие характеристики. Можно играть вокруг с (ограниченная версия) BigTable сами на платформа Google AppEngine .
Рядом с Hadoop, упомянутым выше существует много других реализаций, которые пытаются решить те же проблемы как BigTable (масштабируемость, доступность). Я видел хорошее сообщение в блоге вчера, перечисляющее большинство из них здесь .