RethinkDB наконец-то доступен в нативной версии для Windows вместе с поддержкой Linux и Mac.
Разработчики говорят, что это один из самых частых запросов пользователей RethinkDB, и что перенос RethinkDB в Windows занял год интенсивной разработки, затронув почти все части базы данных.
RethinkDB — это база данных NoSQL JSON с открытым исходным кодом, предназначенная для веб-приложений. Его основным отличием является то, что вы можете указать ему, чтобы он постоянно отправлял обновленные результаты запросов в приложения в режиме реального времени, вместо того, чтобы ваше приложение опрашивало изменения.
Пока что существует предварительная версия Windows для разработчиков, которую, как надеются пользователи, пользователи протестируют в реальном мире, в сообщении блога говорится, что:
«Вы не должны доверять ему свои данные или использовать его в производственных средах. Он также не полностью оптимизирован, поэтому вы можете не получить такую же производительность, как от стабильной версии».
Начиная с выпуска RethinkDB 2.3 и далее, планируется предоставить официальные сборки Windows для каждой версии RethinkDB вместе с бинарными пакетами для Linux и Mac OS X.
Создание версии для Windows заняло много времени, потому что RethinkDB широко использует API-интерфейсы для конкретных платформ, и разработчики решили, что это будет верно и для версии для Windows, поэтому она имеет полную встроенную поддержку Windows. Как сказано в блоге:
«Вы не найдете никаких уровней совместимости с POSIX или других подобных уловок — RethinkDB использует собственные API-интерфейсы Windows на платформе Windows».
Ключевые области, которые «требовали значительных инженерных усилий», включают многопоточность, дисковый и сетевой ввод-вывод, а также цикл обработки событий. Асинхронный ввод-вывод в Windows обрабатывается иначе, чем в Linux. В Linux разработчики используют epoll для получения уведомлений, которые позволяют им узнать, когда дескриптор готов к чтению или записи. В Windows разработчики используют порты завершения ввода-вывода (IOCP). Асинхронные операции ставятся в очередь и отправляют уведомления при успешном или неудачном завершении. Команда вручную добавила пути к коду, совместимому с Windows, для обработки ввода-вывода, зависящего от платформы.
Они также должны были заставить базу данных скомпилироваться с помощью компилятора Microsoft C ++ и убедиться, что все сторонние библиотеки с открытым исходным кодом, используемые в базе данных, единообразно собираются в Windows, а также в Linux и Mac OS X.
Наряду с версией для Windows существует клиентская библиотека C # и простая демонстрация чата ASP.NET с SignalR и драйвером C # RethinkDB, чтобы показать, как начать работу с RethinkDB в Visual Studio. SignalR — это платформа для выполнения обновлений в реальном времени в ASP.NET, которая использует WebSockets для связывания интерфейса JavaScript с серверной частью ASP.NET, обеспечивая уровень абстракции для RPC и распространения событий.