Недавно в моей жизни закончился период поиска новой работы. На одном из собеседований этого периода я узнал, что в мире появилась новая СУБД, разработчики которой обещают вот-вот затмить собой Oracle всемогущий. Заманчивое обещание тут же породило у меня желание попробовать это чудо заморской техники. Речь шла о корейской СУБД Tibero.
По данным википедии:
Tibero — так называется СУБД производимая и распространяемая Tibero Corporation, являющаяся частью Южно-Корейской корпорации TmaxSoft. Разработка этого продукта начата в 2003 году, а в 2008 году они стали второй компанией в мире предоставляющей кластер основанный на дисках, как на разделяемом ресурсе (shared-disk-based cluster).
…
CУБД Tibero считается альтернативой Oracle в связи с их полной совместимостью с продуктами Oracle, включая SQL.
Tibero гарантирует надежность транзакций базы данных (которые являются продуманным набором SQL выражений) обеспечиваемой поддержкой ACID (атомарность, согласованность, изолированность, долговечность).
…
Tibero реализовало уникальную архитектуру потоков (Tibero Thread Architecture) для решения недостатков предыдущих СУБД. В результате Tibero может эффективно использовать системные ресурсы, такие как CPU и память, используя меньшее количество серверных процессов. Это позволяет Tibero предлагать сочетание производительности, стабильности и масштабируемости, и облегчение процесса разработки и настройки. Дополнительно, СУБД позволяет пользователям и разработчикам используя множество стандартных интерфейсов легко интегрироваться с другими СУБД и приложениями.В дополнение, для улучшения ‘Tibero Active Cluster’ (система кластеризации БД похожая на Oracle RAC) была применена технология передачи информации блоками. Tibero поддерживает самонастраивающуюся оптимизацию производительности, надежную систему мониторинга базы данных и систему управления производительностью.
В Корее, Tibero была внедрена более чем 450 компаниям с различными направлениями деятельности: финансы, производство и связи с общественностью; и более чем с 14 компаниями в остальном мире по данным на Июль 2011.
По ощущениям, этот текст был написан сотрудниками самой Tibero, но это мы оставим на их совести.
Если еще покопаться в интернете, то можно обнаружить, что чуть более года назад компания открыла свое представительство в России, а кроме того «В настоящее время в России в реализации находятся около 50 проектов в самых различных областях. Для ряда заказчиков (например, Федерального центра информатизации Счетной палаты РФ) одной из причин поиска альтернативных решений на азиатском направлении (где компания TmaxSoft является лидером) стали введенные санкции со стороны США, касающиеся IT отрасли, которые TmaxSoft не поддерживает. Среди заказчиков Tibero в России: МТС, Министерство обороны РФ, МосЭнергоСбыт, Счетная палата РФ, Банк России, Федеральная служба по тарифам и др.»
В совокупности это ещё больше подогрело мой интерес к этому продукту. И я решил его попробовать: запустить и поиграться с ней. Для этого я в облаке Google арендовал маленький сервер с Debian 7.9 (wheeze) на борту. Вот его параметры:
Machine type: n1-standard-1 (1 vCPU, 3.75 GB memory)
CPU platform: Intel Ivy Bridge
Boot disk and local disks: 40GB Standard persistent disk
Первое с чем ты сталкиваешь — это критически маленькое количество информации на русском, да и на английском тоже её не густо. Второе — это то, что Tibero не предоставляет для нужд обучения и разработки бесплатную версию СУБД как это делает Oracle. Tibero же предоставляет тестовую лицензию на предыдущую версию СУБД сроком на пол года, и найти её мне было не просто. Для этого нужно было найти вот этот официальный, но запрятанный в недры интернета сайт: http://technet.tmaxsoft.com/. зарегистрироваться, скачать дистрибутив последней версии, обнаружить, что на него нет бесплатных лицензий, удалить дистрибутив, скачать дистрибутив старой версии и инструкцию по установке.
И так, скачиваем инструкцию и понимаем, что нам нужно JDK не ниже 1.5, gcc >= 3.4.6, xml файл лицензии на сервере, 512 MB RAM, Swap File 1 GB, 300mb в /tmp, 300MB на жестком диске при полной установке и 200 MB если ставите только клиент (но среди текста инструкции говорится, что без 1,5 GB база не поставится). Требования по Software я выполнил не все по очевидным причинам, а они такие: RedHat Enterprise Linux AS/ES 2.1, 3.0, 4.0. В примечании еще говорится о требовании к версии ядра: она должна быть не меньше 2.6.
Самым странным для меня стало требование поменять параметры ядра для установки! Ладно, если я крупная корпорация и у меня много денег и серверов. А если я маленькая компания и я экономлю на всем, чем могу? Покупаю дешевый корейский Oracle, у меня сервер-то всего один. Там много чего крутится и как-то не очень здорово безальтернативно заставлять меня менять настройки ядра.
Ладно, поправил файл /etc/sysctl.conf на следующее:
kernel.sem = 10000 32000 10000 10000 kernel.shmall = 2097152 kernel.shmmni = 4096 fs.file-max = 6815744 net.ipv4.ip_local_port_range = 1024 65000
Требования Tibero такие:
semmsl 10,000 /proc/sys/kernel/sem semmns 32,000 semopm 10,000 semmni 10,000 shmall 2,097,152 /proc/sys/kernel/shmall shmmax half of physical memory (in bytes) /proc/sys/kernel/shmmax shmmni 4,096 /proc/sys/kernel/shmmni file-max 6,815,744 /proc/sys/fs/file-max ip_local_port_range 1024 - 65000 /proc/sys/net/ipv4/ip_local_port_range
)
Применил настройки с помощью /sbin/sysctl -p и перезагрузил сервер. Сделал для указания, куда должны падать временные файлы установки следующее:
export TB_INST_TMP_DIR=/opt
Все приготовления завершены. Запускаем установщик. Параллельно с инструкцией, проходя по установщику, я решил кое-что поправить под себя. Например раскидывание логов на несколько файлов. В результате установщик сказал мне: «Все супер, можно запускаться». Однако запуститься у меня не получилось. Во-первых надо было сделать вот что:
source ~/.profile
После этого, мне уже не говорили о том, что такой программы нет, а просто сказали: «Tip file open failure.: No such file or directory». Долгое копание в интернете не привело ни к чему разумному. Документация утверждала, что корень зла в не установленном TB_SID, но TB_SID был установлен, а программа все равно была недовольна. Пришлось запустить создание базы данных и выставить все настройки в значение «По умолчанию». После этого наступил успех! База заработала.
После этого возникло желание покинуть гугловый сервер и настроить клиент. Но официальная документация предлагает скачать файл-установщик клиента, с примером исключительно для Windows и умалчивая, где же этот файл все-таки взять.
Пытаясь поставить клиент через установщик СУБД на моём ноутбуке с Ubuntu я обнаружил чудное соответствие документации и реальности. ключ -G приводит к helpу, а не графическому режиму, а для графического режима надо использовать -i gui или -i swing, однако ни первый, ни второй не захотели работать на Ubuntu уверяя меня, что Installer user interface is not supported.
В итоге мне пришлось поставить целиком Tiberoна мой ноутбук с Ubuntu. Прогнать source ~/.profile После этого найти аналог TNSNAME.ora. Находится он в папке $TB_HOME/client/config и называется tbdsn.tbr.
Формат он имеет до боли знакомый:
DBTNS= ( (INSTANCE=(HOST=hostname) (PORT=port) (DB_NAME=DB_NAME) ) )
И… Победа! По команде:
tbsql sys/syspassword@DB_TNS
Я подключился к базе на удаленном хосте (пляски с бубнами вокруг firewall я оставлю за кадром).
Можно сказать, что для каких-то тестов система уже готова.
Тесты производительности адекватные я не делал, так как не мой все-таки профиль. Может, кто заинтересуется и сделает. Для себя могу сказать, что отличий внешних от Oracleмало. Даже их новый язык PSM выглядит так:
CREATE [OR REPLACE] PACKAGE BODY book_manager IS PROCEDURE add_new_book(v_author VARCHAR2, v_name VARCHAR2, publish_year DATE) IS BEGIN IF substr(v_name, 1, 1) >= 'a' AND substr(v_name, 1, 1) < 'k' THEN INSERT INTO books VALUES (1, v_author, v_name, publish_year); ELSE INSERT INTO books VALUES (2, v_author, v_name, publish_year); END IF; COMMIT; book_cnt := book_cnt + 1; END; PROCEDURE remove_lost_book(v_author VARCHAR2, v_name VARCHAR2) IS BEGIN DELETE FROM books WHERE author = v_author AND name = v_name; COMMIT; END; FUNCTION search_book_position(v_author VARCHAR2, v_name VARCHAR2) RETURN NUMBER IS book_position NUMBER; BEGIN SELECT kind INTO book_position FROM books WHERE author = v_author AND name = v_name; RETURN book_position; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('NOT EXIST...SORRY'); RAISE; END; FUNCTION get_total_book_cnt RETURN NUMBER IS BEGIN RETURN book_cnt; END; BEGIN book_cnt := 0; END;
Пока по документации и по объему информации продукт мне показался неспособным выйти на широкий круг эксплуатации. Но, может быть, он чего-то стоит и надо к нему присмотреться?
Всем спасибо, удачи и пока!
ссылка на оригинал статьи http://habrahabr.ru/post/269509/
Добавить комментарий