Существуют ли базы данных, которые основывают надежность на избыточности, а не на постоянном хранилище?
Извините, что название не совсем очевидно, но я не мог сказать это лучше.
В настоящее время мы используем обычную БД (оракул) в качестве нашей очереди заданий, и эти "задания" потребляются некоторым количеством узлов (машин). Таким образом, сервер БД поражается этими узлами, и нам приходится много платить за программное и аппаратное обеспечение для этого сервера базы данных.
Теперь мне пришло в голову, что
1) В системе уже есть несколько узлов
2) "Задания" не могут быть потеряны из-за сбоев узлов, но нет причин, по которым они должны находиться во вторичном хранилище (нет причин, по которым они не могут находиться в памяти, пока они не потеряны)
Учитывая это, нельзя ли сохранить эти задания в памяти, убедившись, что по крайней мере n копий этого задания присутствует во всем кластере, тем самым избавляясь от сервера БД?
Доступны ли такие технологии?
3 ответа
Вы смотрели на Gigaspaces? В масштабе интернета вам не нужно упорствовать вообще. Вы просто должны знать, что достаточно копий. Если у вас есть соединения с низкой задержкой к местам, которые не находятся на одной и той же электросети (или имеют заряд батареи), достаточно протолкнуть ваши транзакции к дубликатам.
Если вы рассматриваете возможность хранения до нескольких терабайт данных и ищете избыточность и возможность восстановления диска, обратите внимание на Oracle Coherence. Например:
- Эластичный. Просто добавьте узлы. Автоматическое обнаружение. Автоматическое распределение нагрузки. Нет потери данных. Нет перерыва. Каждый раз, когда вы добавляете узел, вы получаете большую емкость данных и большую пропускную способность.
- Используйте как RAM, так и flash. Прозрачное. Легко обрабатывать 10 или даже 100 гигабайт на узел Coherence (например, до ТБ или более на физический сервер).
- Автоматическая высокая доступность (HA). Убить процесс, без потери данных. Убить сервер, без потери данных.
- Постоянная доступность центра обработки данных (CA). Убить дата-центр, без потери данных.
Ради полного раскрытия я работаю в Oracle. Мнения и взгляды, выраженные в этом посте, являются моими собственными и не обязательно отражают мнения или взгляды моего работодателя.
Это зависит от того, насколько вы ожидаете, что эти технологии сделают для вас. Существует множество базовых баз данных в памяти (SQLite, Redis и т. Д.), И вы можете использовать обычные методы репликации баз данных с несколькими ведомыми устройствами в нескольких центрах обработки данных, чтобы в значительной степени обеспечить долговечность без сохранения.
Если вы храните в памяти, вам, скорее всего, не хватит места, и вам потребуется горизонтальное разбиение (sharding), и вы можете захотеть проверить что-то вроде VoltDB, если вы хотите придерживаться SQL.