hfs
MySQL
hfs | MySQL | |
---|---|---|
2 | 148 | |
22 | 10,319 | |
- | 1.9% | |
2.2 | 9.8 | |
8 months ago | 6 days ago | |
C | C++ | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
hfs
-
HFS Origins: The Turbo File System (2017)
I believe most of the open source HFS code was from NeXT rather than Mac OS. A lot of classic Mac OS was still 68k assembly.
eg:
https://github.com/apple-oss-distributions/hfs/blob/hfs-106/...
13-Jan-1998 jwc first cut (derived from old NextStep macfs.util code and cdrom.util code).
-
Apple's custom NVMes are amazingly fast – if you don't care about data integrity
I just looked into this, since what you say and what Apple’s documentation says are two different things.
Here is Apple’s documentation:
https://devstreaming-cdn.apple.com/videos/wwdc/2019/419ef9ip...
F_BARRIERFSYNC: fsync() with a barrier
F_FULLFSYNC: Drive flush its cache to disk
This sounds like the Linux fsync() and Linux syncfs() respectively. What you say is that F_FULLFSYNC is the same as Linux fsync() and your performance numbers back that up. Unfortunately, you would only see a difference between Linux fsync() and Linux syncfs() if you have files being asynchronously written at the same time as the files that are subject to fsync()/syncfs(). fsync() would only touch the chosen files while syncfs() would touch both. If you did not have heavy background file writes and F_FULLSYNC really is equivalent to syncfs(), you would not be able to tell the difference in your tests.
That said, let’s look at how this actually works on Mac OS. Unfortunately, the apfs driver does not appear to be open source, but the HFS+ driver is. Here are the relevant pieces of code in HFS+:
https://github.com/apple-oss-distributions/hfs/blob/hfs-556....
https://github.com/apple-oss-distributions/hfs/blob/5e3008b6...
First, let me start with saying this merits a faceplam. The fsync() operation is operating at the level of the mount point, not the individual file. F_FULLSYNC and F_BARRIERFSYNC are different, but they both might as well be variants of the Linux syncfs().
For good measure, let us look at how this is done on the MacOS ZFS driver:
https://github.com/openzfsonosx/zfs/blob/master/module/zfs/z...
The file is properly synced independently of the mountpoint, such that other files being modified in the file are not immediately required to be written out to disk. That said, both F_FULLSYNC and F_BARRIERFSYNC on MacOS are mapped by the ZFS driver to the same function that implements fsync() on Linux:
https://github.com/openzfs/zfs/blob/master/module/os/linux/z...
For good measure, let us look at how syncfs() is implemented by ZFS on Linux:
https://github.com/openzfs/zfs/blob/master/module/os/linux/z...
It operates on the superblock, which is what MacOS’ HFS+ driver does.
From this, I can conclude:
Linux syncfs() == macOS F_FULLFSYNC on HFS+
Linux fsync() == macOS fsync()/F_FULLFSYNC/F_BARRIERFSYNC on ZFS
Also, MacOS F_BARRIERSYNC is a weakened Linux syncfs() and Apple’s documentation is very misleading (although maybe not technically wrong). POSIX does allow fsync to be implemented via syncfs (sync in POSIX, but I am saying syncfs from Linux to be less confusing). However, not issuing and waiting for the completion of an IO barrier on fsync is broken behavior like you claim.
I am not sure how MacOS APFS behaves. I imagine that additional testing that takes into account the nuances in semantics would be able to clarify that. If it behaves like HFS+, it is broken.
MySQL
-
Essential Tools & Technologies for New Developers
Every time I buy a new computer, the first thing I install is the servers for MySql and Postgres, the two most common databases. This way, I can start the databases with a simple command like this:
-
The Scoop on SQL
MySQL
-
Understanding SQL vs. NoSQL Databases: A Beginner's Guide
SQL (Structured Query Language) databases are relational databases. They organize data into tables with rows and columns, and they use SQL for querying and managing data. Examples include MySQL, PostgreSQL, and SQLite.
-
How to sync your MySQL database with Salesforce in Docker using Boomi
MySQL is an open-source relational database management system (RDBMS) that stores, organizes, and accesses data in a structured format. The prerequisites section discussed Connecting your Boomi Atom runtime and MySQL on Docker, and this section will build on that knowledge.
-
From zero to hero: using SQL databases in Node.js made easy
Node.js, MySQL and PostgreSQL servers installed on your machine
-
How to dump and restore a Postgres DB with new table ownership
I've used MySQL for years. But recently, I found myself working PostgreSQL and simple things like dumping and restoring a database are different enough that I decided to document the process. It's straightforward enough once I knew how.
-
How to choose the right type of database
MySQL: A widely-used open-source SQL database, MySQL is efficient for OLTP with its fast data processing and robustness. It is a go-to choice for web-based applications, e-commerce, and online transaction systems.
-
How to Build & Deploy Scalable Microservices with NodeJS, TypeScript and Docker || A Comprehesive Guide
Our orders microservice will have its own set of teachnologies just like we earlier plotted that is mysql database and sequelize orm. MySQL is an open-source relational database management system (RDBMS) that is widely used for building web applications and managing data. It is a popular choice for many developers and organizations due to its performance, reliability, and ease of use. Sequelize is a popular Object-Relational Mapping (ORM) library for Node.js. It provides a way to interact with relational databases like MySQL, PostgreSQL, SQLite, and MSSQL using JavaScript or TypeScript. It simplifies database operations by allowing developers to use JavaScript objects to represent database tables and records, instead of writing raw SQL queries. In this microservice, we will use it to query our MySQL database.
- MySQL has support for external languages
-
A Developer's Journal: Simplifying the Twelve-Factor App
Data Stores (Amazon RDS, MySQL, PostgreSQL)
What are some alternatives?
zfs - OpenZFS on OS X
phpMyAdmin - A web interface for MySQL and MariaDB
xnu
ClickHouse - ClickHouse® is a free analytics DBMS for big data
Apache - Mirror of Apache HTTP Server. Issues: http://issues.apache.org
Bedrock - Rock solid distributed database specializing in active/active automatic failover and WAN replication
PostgreSQL - Mirror of the official PostgreSQL GIT repository. Note that this is just a *mirror* - we don't work with pull requests on github. To contribute, please see https://wiki.postgresql.org/wiki/Submitting_a_Patch
Firebird - FB/Java plugin for Firebird
d3 - Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada:
MariaDB - MariaDB server is a community developed fork of MySQL server. Started by core members of the original MySQL team, MariaDB actively works with outside developers to deliver the most featureful, stable, and sanely licensed open SQL server in the industry.
Adminer - Database management in a single PHP file
Percona Server - Percona Server