https://qiita.com/iisaka51/items/45f23df873ea5be433c7
@iisaka51 (گویچی (ایساکا) یوکاوا)
زنگ
پایگاه داده
RocksDB
TiKV
surrealdb
آخرین به روز رسانی در 15 مه 2023
ارسال شده در 21 ژانویه 2023
معرفی
این سند SurrealDB را که در جولای 2022 منتشر شد، خلاصه می کند.
تاریخچه SurrealDB
مدت کوتاهی از عرضه آن می گذرد، اما توسعه آن در سال 2016 آغاز شد.
فوریه 2016 توسعه در GoLang آغاز شد
2017 به عنوان یک DB پشتیبان برای Jul SaaS شروع به کار کرد
تصمیم گرفت به عنوان منبع باز در اکتبر 2021 منتشر شود، بازسازی شده با Rust
نسخه بتا.1 ژوئیه 2022
نسخه بتای 5 اوت 2022
انتشار نسخه بتای ۸ اکتبر ۲۰۲۲
SurrealDB Inc.
2021 Nov SurrealDB Ltd. را در لندن تأسیس کرد
2023 ژانویه 6 میلیون دلار برای DBaaS جمع آوری کرد
پس زمینه SurrealDB
روند بزرگ
انتزاع پایگاه داده، ابری، بدون سرور
شرکت های بیشتری از DBaaS استفاده می کنند
نظرسنجی MariaDB نشان میدهد که 61% از توسعهدهندگان/اپراتورها انتقال کامل به DBaaS را تکمیل کردهاند یا در شرف تکمیل هستند.
در حال گسترش اندازه بازار DBaaS
24.8 میلیارد دلار تا سال 2025
محیط سرمایه گذاری غنی برای DBaaS
SingleStore 30 میلیون دلار جمع آوری می کند (2022/اکتبر)
EdgeDB 15 میلیون دلار جمع آوری می کند (2022/نوامبر)
SurrealDB 6 میلیون دلار جمع آوری می کند (2023/ژانویه)
محبوبیت SurrealDB
صفحه بالای اخبار Hacke
شماره 4 2022 / آگوست
شماره 2 2022/سپتامبر
رتبه بندی در مخازن ویژه GitHub
2022 / آگوست
2022 / دسامبر
ستاره گیت هاب
48 ساعت از 180 ستاره تا 1500 ستاره
در عرض 3 هفته پس از پرتاب به 5000 ستاره دست یافت
در 4 هفته پس از پرتاب به 10000 ستاره دست یافت
شماره 1 در لیست داغ بخش برنامه نویسی و Rust Reddit
مجوز SurrealDB
کد منبع SurrealDB مجوز کسب و کار نرم افزار 1.1 است
SDK و کتابخانه ها/درایورها MIT هستند
SurrealDB BSL می تواند از SurrealDB بدون محدودیت در تعداد گره ها استفاده کند مگر اینکه به عنوان یک DBaaS تجاری ارائه شود.
می تواند در محصولات گنجانده شود
SurrealDB BSL به مدت 4 سال معتبر است
1 ژانویه 2026 این محدودیت منقضی می شود و کد تحت مجوز فعلی آپاچی 2.0 منبع باز می شود.
رایگان برای استفاده برای هر منظور
ویژگی های SurrealDB
در Rust پیاده سازی شده است
احتمال وقوع خطای بخش بندی کمتر است
تلفیقی متقابل
نسبتا سریع در مقایسه با زبان های دیگر
سبک وزن: باینری اندازه لینوکس 24 مگابایت، macOS: 44 مگابایت
یک باینری هم برای سرور و هم برای کلاینت REPL
نصب آسان
پشتیبانی از HTTP/Restful API
پشتیبانی از WebSockets
DB های Backend: EchoDB، RocksDB، TiKV، FoundationDB، IndexedDB
ویژگی ها به عنوان پایگاه داده
بدون طرحواره: اشکالی ندارد که یک طرحواره تعریف کنید
فرمت های مختلف ذخیره سازی: جداول، اسناد، نمودارها و غیره.
تراکنش های ACID چند ردیفی و چند جدولی
پیوندها و اتصالات گراف جهت دار را ضبط کنید
بدون JOIN، اجتناب هوشمند از مشکل N+1
از پیش تعریف پرس و جوهای تحلیلی
انتخاب، تجمیع، گروه بندی و ترتیب به عنوان داده نوشته شده است
پرس و جوها را می توان با جاوا اسکریپت تعبیه شده گسترش داد
می تواند عبارات منظم در پرس و جو بنویسد (/regex/)
از GeoJSON پشتیبانی می کند
عملیات CRUD را می توان به صورت موازی اجرا کرد
نقاط قوت SurrealDB
همچنین دارای ویژگی های متمایز کننده است
کاربر می تواند مستقیماً از فرانت اند دسترسی داشته باشد
احراز هویت و مجوز را می توان به درستی در سمت پایگاه داده تنظیم کرد
داده ها را می توان در زمان واقعی همگام کرد
اسب های رقیب کمی مانند Google Firestore وجود دارد
فقط یک DB در هنگام استفاده در محل
اگر احراز هویت و مجوز می تواند در سمت پایگاه داده انجام شود ...
قادر به ارائه کنترل دسترسی مبتنی بر نقش خواهد بود
کنترل دسترسی بر اساس نقش های تعریف شده مانند مدیر، ویرایشگر و بیننده
نقاط ضعف SurrealDB
زمان زیادی از انتشار آن نگذشته است (ژوئیه 2022)
ممکن است آسیبپذیریها و باگهای امنیتی بالقوه وجود داشته باشد
PostgreSQL اولین بار در سال 1997 منتشر شد، سلف آن Postgress در سال 1989)
اولین نسخه MySQL در سال 1995
MariaDB اولین بار در سال 2009 منتشر شد
MongoDB اولین بار در سال 2009 منتشر شد
اطلاعات کمی
سند رسمی نیز در حال تهیه است.
اگر مشکل دارید، کد منبع را بخوانید
همه ویژگی ها پیاده سازی نشده اند
SurrealDB در حال حاضر سودآور نیست: سرویس DBaaS در سال 2023 راه اندازی شد
ویژگی هایی که در حال حاضر در حال توسعه هستند (حتی در نسخه بتا.9 کامل نیستند)
پشتیبانی از چند گره در حالت توزیع شده
همانند سازی
بررسی سلامت
GraphQL
FULLTEXT - نمایه متن کامل
زمینه یادگیری
پیکربندی خودکار بر اساس تجزیه و تحلیل یادگیری ماشینی فیلدهای مشخص شده
جدول موقت نسخه شده
امکان "بازگشت به گذشته" هنگام مرور داده ها
برجسته کردن کد IDE (Atom، VSCode، Vim…)
انتشار برنامه I/F کاربر به صورت 1.x برنامه ریزی شده است
بررسی اجمالی معماری 2 لایه SurrealDB
surrealdb_arch.png
نمای کلی عملیات SurrealDB
surrealdb_dataflow.png
کد منبع
تعداد، تعداد خطوط شامل نظرات است (SurrealDB 1.0.0-beta.8)
به هر حال، MariaDB 10.9 بیش از 1.3 میلیون ردیف دارد (بیش از 12000 ردیف فقط برای مشتری)
|-- src // لایه API 4172
|-- خالص 1981
|-- cli 895
|-- rpc 174
...
|-- lib/src // BL Layer 32261
|-- sql 19030
|-- fnc3524
...
|-- kvs 3286
|-- indexdb 220
|-- rocksdb 316
|-- tikv 269
...
SurrealDB به طور شگفت انگیزی توابع کمی را پیاده سازی می کند
از nom برای تجزیه پرس و جو استفاده کنید
توابع را می توان برای ساختن تجزیه کننده ها به صورت تدریجی به هم متصل کرد
استفاده از echodb برای ذخیره سازی حافظه (Tobie)
KVS DB درون حافظه با کنترل همزمانی چند نسخه
استفاده از storekey برای ذخیره در KVS (Tobie)
رمزگذاری باینری حفظ نظم فرهنگ لغت
هنگام ایجاد کلیدهای KVS مرتب شده مفید است
Serialization/Deserialization از MsgPack و serde (rmp-serde) استفاده می کند.
از geo برای تجزیه GeoJSON استفاده کنید
از RocksDB در هنگام استفاده از فایل های محلی به عنوان ذخیره داده استفاده کنید
TiKV و FoundationDB به عنوان توابع DB توزیع شده استفاده می شوند
مواردی که SurrealDB را در KVS ذخیره می کند
فراداده
ساختارهایی مانند جداول، نمایه ها و دامنه ها
داده ها
مقدار شی که توسط SurealDB نگهداری می شود
نحوه ذخیره SurrealDB در KVS
ساختارهای Map Rust و MsgPack با اتصالات serde
صرفه جویی در اندازه ذخیره سازی
سریالسازی/آسیالزدایی کارآمد
دو راه برای دسترسی به داده های KVS وجود دارد
مبتنی بر کلید: با تعیین یک کلید خاص (سریع) یک مقدار دریافت کنید
اسکن: دریافت همه مقادیر با توجه به طیف وسیعی از کلیدها (آهسته)
ساختار سلسله مراتبی را به عنوان کلید حفظ کنید
فضای نام -> پایگاه داده -> جدول -> شناسه
SurrealDB محدوده ها را با ساختن کلیدها به صورت سلسله مراتبی به اسکن تبدیل می کند
نصب (آسان و سریع)
لینوکس
$ curl -sSf https://install.surrealdb.com | sh
سیستم عامل مک
$ brew install surrealdb/tap/surreal
پنجره ها
PS C:\> iwr https://windows.surrealdb.com -useb | iex
بارانداز/پادمن بارانداز
$ docker run --rm -p 8000:8000 surrealdb/surrealdb: آخرین شروع
$ podman run --rm -p 8000:8000 surrealdb/surrealdb: آخرین شروع
SurrealDB را شروع کنید
اولین آرگومان فرمان فرعی start، مقصد داده است
پیش فرض حافظه است
$ start surreal --user root --pass root memory
مقاصد دیگر
file:///path/to/data.db سیستم فایل (RocksDB)
rocksdb:///path/to/data.db RocksDB
tikv://endpoiint TiKV TiKV
fdb:[///path/to/clusterfile] FoundationDB (نیاز به بازسازی دارد)
حالت سختگیرانه
با گزینه --strict شروع کنید
اگر NAMESPACE، DATABASE تعریف نشده باشند، خطایی رخ می دهد
اگر TABLE را تعریف نکنید، خطایی رخ می دهد
تخلیه/بازیابی
با دستور فرعی صادرات به یک فایل تخلیه کنید
بازیابی از فایل با دستور فرعی import
صادرات سورئال $ --conn http://dev00:8000 --ns test --db test dump.db
واردات سورئال $ --conn http://dev00:8000 --ns test --db test dump.db
از کلاینت CLI متصل شوید
زیر دستور sql را اجرا کنید
$ سورئال sql --conn http://dev00:8000 --ns test --db test --pretty
--user و --pass احراز هویت کاربر/رمز عبور ROOT
اگر JSON را با -pretty خروجی بگیرید، فرمت شده و نمایش داده می شود.
--ns NAMESPACE نشان دهنده --db DATABASE است
سورئالD
0 コメント:
コメントを投稿