https://aws.amazon.com/blogs/aws/introducing-amazon-s3-vectors-first-cloud-storage-with-native-vector-support-at-scale
Звучит конечно прикольно, более дешёвый стор большого количества векторов по которому работает ann поиск.
А есть уже какие-то известные детали реализации/etc?
Я попытался побыстрому найти инфу об интеграции с opensearch в их репе или их knn репе, но безуспешно
Наиболее близкое issue, которое я нашёл, это:
https://github.com/opensearch-project/k-NN/issues/2391
Однако, насколько я понимаю, там речь идёт о внешнем билде индекса, а не о внешнем кверинге
Звучит конечно прикольно, более дешёвый стор большого количества векторов по которому работает ann поиск.
А есть уже какие-то известные детали реализации/etc?
Я попытался побыстрому найти инфу об интеграции с opensearch в их репе или их knn репе, но безуспешно
Наиболее близкое issue, которое я нашёл, это:
https://github.com/opensearch-project/k-NN/issues/2391
Однако, насколько я понимаю, там речь идёт о внешнем билде индекса, а не о внешнем кверинге
Amazon
Introducing Amazon S3 Vectors: First cloud storage with native vector support at scale (preview) | Amazon Web Services
Amazon S3 Vectors is a new cloud object store that provides native support for storing and querying vectors at massive scale, offering up to 90% cost reduction compared to conventional approaches while seamlessly integrating with Amazon Bedrock Knowledge…
👍3
Решил почитать перед сном коммиты в llvm libc++, а то там llvm 21 вышел, думаю может обновиться. И нашел коммит, который фиксит любопытное issue.
Вот здесь хорошая выжимка, но если совсем кратко:
1) в llvm 20 сделали abi break на кучу стандартных контейнеров, заметили спустя полгода, что делать с llvm 20 пока не решили) А ещё с gcc фикс не работает так как баг в gcc.
2)хотя почему вы при этом используете llvm libc++ для меня загадка
Ну и раз уж что-то пишу, по-моему стоят упоминания
1) в abseil поменяли load factor с 7/8 на 27/32
2) в той же самой llvm libc++, multimap/set::find оптимизировали и он перестал возвращать тоже самое что lower_bound
3) ещё из забавных оптимизаций: в abseil и в llvm libc++ перестали считать хеш для вставки в пустую хештаблицу
Вот здесь хорошая выжимка, но если совсем кратко:
1) в llvm 20 сделали abi break на кучу стандартных контейнеров, заметили спустя полгода, что делать с llvm 20 пока не решили) А ещё с gcc фикс не работает так как баг в gcc.
2)
[[no_unique_address]] для одинаковых типов, но разных филдов работает весьма неочевидным образом, если вы тот самый любитель поликонваться динамически будьте аккуратны Ну и раз уж что-то пишу, по-моему стоят упоминания
1) в abseil поменяли load factor с 7/8 на 27/32
2) в той же самой llvm libc++, multimap/set::find оптимизировали и он перестал возвращать тоже самое что lower_bound
3) ещё из забавных оптимизаций: в abseil и в llvm libc++ перестали считать хеш для вставки в пустую хештаблицу
GitHub
[libc++] ABI break: std::deque changes its size in LLVM 21 · Issue #154146 · llvm/llvm-project
The following code shows how the size of std::deque has changed in LLVM version 21. // t.h #include <deque> #include <memory> #include <cassert> struct malloc_allocator_base { sta...
👍12
Вообще вот странная штука, больших проектов на C++, C, Rust которые делают базы данных или около довольно много (например стартапы, да и в bigtech).
Но при этом тех которые делают хотя бы следующие вещи:
1. Запускают свои тесты с 4 санитайзерами
2. Имеют coverage репорт
3. Имеют perf тесты и репорт
Как будто единицы, почему так?
(ну достаточно часто есть какой-то минимальный, криво сделанный сабсет описанного)
Это же что-то в целом довольно базовое, в целом для любого проекта.
Базы данных это вроде бы что-то довольно низкоуровневое, где цена багов/регресии может быть высока.
Да и делается не так сложно.
Я бы еще понял если бы сейчас был какой-нибудь 2015, но сейчас 2025.
В общем где эта, "культура разработки"?
Но при этом тех которые делают хотя бы следующие вещи:
1. Запускают свои тесты с 4 санитайзерами
2. Имеют coverage репорт
3. Имеют perf тесты и репорт
Как будто единицы, почему так?
(ну достаточно часто есть какой-то минимальный, криво сделанный сабсет описанного)
Это же что-то в целом довольно базовое, в целом для любого проекта.
Базы данных это вроде бы что-то довольно низкоуровневое, где цена багов/регресии может быть высока.
Да и делается не так сложно.
Я бы еще понял если бы сейчас был какой-нибудь 2015, но сейчас 2025.
В общем где эта, "культура разработки"?
👍20👎1
Привет, мы частично заопенсорсили текущий код нашего проекта -- SereneDB. Это оказалось тяжелее чем хотелось бы :) https://github.com/serenedb/serenedb
Большую часть ближайших тасок будем делать в опенсорсе. В целом проект ещё далековат от релизного состояния, но "бета" с первыми публичными бенчмарками планируется к концу февраля.
Пара интересных моментов, которые можно посмотреть уже сейчас, связаны с архитектурой:
=> pg wire protocol (postgres drivers and tools like psql)
=> libpq_query parser (postgres query syntax)
=> axiom query frontend (runner + optimizer)
=> velox query execution
=> rocksdb | search
На мой взгляд, наиболее любопытны два аспекта:
axiom -- библиотека оптимизатора для velox, которую недавно начала делать meta. Мы активно подключились к разработке, примерно половина коммитов за последние 3 месяца наши. Кстати в нашем форке есть пока отсутствующие у них "фичи": window функции, cross джоины, etc. Да, проект пока ещё совсем сырой, но мне кажется библиотека оптимайзера это классная идея, так как если с execution оно более менее устоялось, с оптимайзерами все не так однозначно
Второй аспект, но не по значению, поисковый движок, который изначально был сделан по дизайну lucene, но со временем эволюционировал во что-то ближе к гибриду с колоночным базам данных.
Кстати если вы не особо разработчик баз данных, у нас есть разные прикольных чисто инженерные моментов:
1) build from source (кроме libc, там пока не густо), как следствие например мы можем легко пропатчить libc++ и используем memory sanitizer
2) А ещё именно это позволяет легко получать static binary
3) И да у нас C++26, clang, llvm стек в общем
4) А для concurency юзаем YACLib
5) Да и в целом есть много прикольных решений про которые расскажем немного позже, например, сериализации структур с помощью boost pfr или кастомные локфри iobuf-ы
В любом случае буду рад всем кто поддержит наш пока небольшой проект с помощью PR/issue/звёздочек!
Большую часть ближайших тасок будем делать в опенсорсе. В целом проект ещё далековат от релизного состояния, но "бета" с первыми публичными бенчмарками планируется к концу февраля.
Пара интересных моментов, которые можно посмотреть уже сейчас, связаны с архитектурой:
=> pg wire protocol (postgres drivers and tools like psql)
=> libpq_query parser (postgres query syntax)
=> axiom query frontend (runner + optimizer)
=> velox query execution
=> rocksdb | search
На мой взгляд, наиболее любопытны два аспекта:
axiom -- библиотека оптимизатора для velox, которую недавно начала делать meta. Мы активно подключились к разработке, примерно половина коммитов за последние 3 месяца наши. Кстати в нашем форке есть пока отсутствующие у них "фичи": window функции, cross джоины, etc. Да, проект пока ещё совсем сырой, но мне кажется библиотека оптимайзера это классная идея, так как если с execution оно более менее устоялось, с оптимайзерами все не так однозначно
Второй аспект, но не по значению, поисковый движок, который изначально был сделан по дизайну lucene, но со временем эволюционировал во что-то ближе к гибриду с колоночным базам данных.
Кстати если вы не особо разработчик баз данных, у нас есть разные прикольных чисто инженерные моментов:
1) build from source (кроме libc, там пока не густо), как следствие например мы можем легко пропатчить libc++ и используем memory sanitizer
2) А ещё именно это позволяет легко получать static binary
3) И да у нас C++26, clang, llvm стек в общем
4) А для concurency юзаем YACLib
5) Да и в целом есть много прикольных решений про которые расскажем немного позже, например, сериализации структур с помощью boost pfr или кастомные локфри iobuf-ы
В любом случае буду рад всем кто поддержит наш пока небольшой проект с помощью PR/issue/звёздочек!
GitHub
GitHub - serenedb/serenedb: The First Distributed Real-Time Search Analytics Database
The First Distributed Real-Time Search Analytics Database - serenedb/serenedb
👍59
Loser story
кастомные локфри iobuf-ы
Мы тут написали небольшой пост про свой iobuf который юзаем для реализации postgres протокола:
https://www.serenedb.com/blog/io-buffer
tldr: как мне кажется ключевых моментов три
1) он chunked => отсутствуют большие аллокации/копии данных
2) он простое wait-free
3) в него можно записать что-то потом (uncommitted, в блоге написано подробнее), это важно чтобы сначала сериализовать что-то и только потом записать размер этого в префиксе.
Вообще изначально думали заюзать folly iobuf или absl cord, но коллега очень не хотел мьютекс в таком простом кейсе добавлять :)
Собственно код самого буфера и проекта по ссылке
https://github.com/serenedb/serenedb
Буду рад всем кто поддержит нас с помощью PR/issue/звёздочек!
https://www.serenedb.com/blog/io-buffer
tldr: как мне кажется ключевых моментов три
1) он chunked => отсутствуют большие аллокации/копии данных
2) он простое wait-free
3) в него можно записать что-то потом (uncommitted, в блоге написано подробнее), это важно чтобы сначала сериализовать что-то и только потом записать размер этого в префиксе.
Вообще изначально думали заюзать folly iobuf или absl cord, но коллега очень не хотел мьютекс в таком простом кейсе добавлять :)
Собственно код самого буфера и проекта по ссылке
https://github.com/serenedb/serenedb
Буду рад всем кто поддержит нас с помощью PR/issue/звёздочек!
👍29